home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************************
- **
- ** Coded by Dino Papararo LAST MODIFIED 4-August-2002
- **
- ** Modified for reaction-, locale- and arexx-support by Edgar Schwan 23-Jan-2002
- **
- *******************************************************************************/
-
- //#define STORMAMIGA
- //#define STORMAMIGA_OS3
-
- //#include <stormamiga.h>
- //#include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include <exec/exec.h>
- #include <powerpc/powerpc.h>
- #include <powerpc/memoryPPC.h>
- //#include <clib/alib_protos.h>
- //#include <clib/powerpc_protos.h>
- #include <intuition/intuition.h>
- #include <intuition/gadgetclass.h>
- #include <graphics/gfxbase.h>
- #include <graphics/scale.h>
- #include <devices/printer.h>
- #include <workbench/workbench.h>
- #include <classes/arexx.h> /* new for ARexx-support */
- #include <rexx/rxslib.h> /**/
- #include <rexx/errors.h> /**/
- #include <iffp/ilbmapp.h>
-
- #ifndef __STORMGCC__
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/diskfont_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/utility_protos.h>
- #include <clib/iffparse_protos.h>
- #include <clib/icon_protos.h>
- #include <clib/asl_protos.h>
- #include <clib/wb_protos.h>
- #include <clib/locale_protos.h>
- #include <clib/powerpc_protos.h>
- #include <clib/rexxsyslib_protos.h> /* new for ARexx-support */
- #include <pragmas/exec_pragmas.h>
- #include <pragmas/dos_pragmas.h>
- #include <pragmas/diskfont_pragmas.h>
- #include <pragmas/gadtools_pragmas.h>
- #include <pragmas/utility_pragmas.h>
- #include <pragmas/iffparse_pragmas.h>
- #include <pragmas/icon_pragmas.h>
- #include <pragmas/asl_pragmas.h>
- #include <pragmas/wb_pragmas.h>
- #include <pragmas/locale_pragmas.h>
- #include <pragma/powerpc_lib.h>
- #include <pragmas/rexxsyslib_pragmas.h> /* new for ARexx-support */
- #include <clib/intuition_protos.h>
- #include <clib/graphics_protos.h>
- #include <pragmas/intuition_pragmas.h>
- #include <pragmas/graphics_pragmas.h>
- #else /*__STORMGCC__*/
- #include <proto/exec.h>
- #include <proto/dos.h>
- #include <proto/diskfont.h>
- #include <proto/gadtools.h>
- #include <proto/utility.h>
- #include <proto/iffparse.h>
- #include <proto/icon.h>
- #include <proto/asl.h>
- #include <proto/wb.h>
- #include <proto/powerpc.h>
- #include <proto/rexxsyslib.h> /* new for ARexx-support */
- #define __NOLIBBASE__
- #include <proto/intuition.h>
- #include <proto/graphics.h>
- #endif /*__STORMGCC__*/
-
- extern struct ExecBase *SysBase;
-
- #include "flashmandel.h"
-
- #include "FM_ConfirmReq_React.h"
- #include "FM_PalettePref_React.h"
- #include "FM_InfoReq_React.h"
- #include "FM_IntegerReq_React.h"
- #include "FM_SysInfoReq_React.h"
- #include "FM_CoordReq_React.h"
-
- #include "FM_Reaction.h" /* new for reaction-support */
- #include "FM_ReactionCD.h" /**/
- #include "FM_ReactionBasics.h"
- #include "FM_ARexx_React.h" /* new for ARexx-support */
- #include "FM_ARexx_Misc.h" /**/
-
-
-
- struct Library *ResourceBase = NULL; /* new for reaction-support */
-
- struct Catalog *CatalogPtr = NULL; /**/
-
- TEXT FMSCREENNAME [MAXPUBSCREENNAME + 1] = "FlashMandel.1"; /**/
-
- UWORD oldstatus = 0; /**/
-
- ULONG receivedsig, wsignal, lastsignal, allocsignal; /**/
-
- BOOL res; /**/
-
- struct RxsLib *RexxSysBase = NULL;
-
- extern Object *ARexxObj;
-
- extern ULONG arexxsignal;
-
- extern struct List ARexxEventList;
-
- BOOL ForceAbort = FALSE;
-
- #ifndef __STORMGCC__
- struct Library *PowerPCBase = NULL;
- #else /*__STORMGCC__*/
- extern struct Library *PowerPCBase;
- #endif /*__STORMGCC__*/
-
- struct MandelChunk MANDChunk = {0};
-
- UBYTE *PixelLine;
-
- UBYTE *GfxPpcMem;
-
- TEXT VERSION_STRING [] = "\0$VER: " VERSION " " COPYRIGHT_DATE " by " AUTHOR " compiled in " DATE "\n\0";
-
- TEXT CMD_Guide [] = "Run >NIL: SYS:Utilities/MultiView FlashMandel:Docs/FlashMandel.guide";
-
- TEXT MYFILE [MAX_FILELEN],PICTURESDIR [MAX_DIRLEN],PALETTESDIR [MAX_DIRLEN],MYPATH [MAX_PATHLEN],BAR_STRING [BARLEN],USERNAME [MAX_FILELEN];
-
- TEXT MYFONT [MAX_FILELEN];
-
- TEXT CPU68K_STR [10],FPU68K_STR [10],CPUPPC_STR [10],FPUPPC_STR [10];
-
- TEXT *MYDIR = NULL;
-
- WORD MX1 = 0 , MY1 = 0 , MX2 = 0 , MY2 = 0, W = 0, H = 0; /* changed for ARexx-support */
-
- BOOL DEPTH_CHANGED;
-
- WORD ZOOMLINE [PAIRS << 1], RETURNVALUE = 0;
-
- LONG PRIORITY = DEF_STARTPRI,DELAY = 5L,__oslibversion = Lib_Version;
-
- ULONG MASK = TMASK;
-
- ULONG ELAPSEDTIME = NULL,COLORS,CPUINFO,UFLAGS = NULL, UITERATIONS = NULL, UPOWER = NULL,MAX_ITERATIONS = 320;
-
- LDouble RMIN=INIT_DEF_RMIN,RMAX=INIT_DEF_RMAX,IMIN=INIT_DEF_IMIN,IMAX=INIT_DEF_IMAX;
-
- LDouble DEF_RMIN,DEF_RMAX,DEF_IMIN,DEF_IMAX,DEF_JKRE=INIT_DEF_JKRE,DEF_JKIM=INIT_DEF_JKIM,URMIN=0.0,URMAX=0.0,UIMIN=0.0,UIMAX=0.0,UJKRE=0.0,UJKIM=0.0;
-
- LDouble INCREMREAL=0.0,INCREMIMAG=0.0,CRE=0.0,CIM=0.0,JKRE=0.0,JKIM=0.0;
-
- ULONG *PALETTE;
-
- CPTR *VINFO = NULL;
-
- UBYTE (*COLORREMAP) (const LDouble,const LDouble,const LDouble);
-
- VOID (*V_LINE) (struct RastPort *,const WORD,const WORD,const WORD);
-
- VOID (*H_LINE) (struct RastPort *,const WORD,const WORD,const WORD);
-
- WORD (*M_FUNC) (ULONG,ULONG,LDouble,LDouble);
-
- WORD (*J_FUNC) (ULONG,ULONG,LDouble,LDouble,LDouble,LDouble);
-
- UBYTE LinearRemap (const LDouble,const LDouble,const LDouble);
- UBYTE LogRemap (const LDouble,const LDouble,const LDouble);
- UBYTE RepeatedRemap (const LDouble,const LDouble,const LDouble);
- UBYTE SquareRootRema (const LDouble,const LDouble,const LDouble);
- UBYTE OneRemap (const LDouble,const LDouble,const LDouble);
- UBYTE TwoRemap (const LDouble,const LDouble,const LDouble);
- UBYTE ThreeRemap (const LDouble,const LDouble,const LDouble);
- UBYTE FourRemap (const LDouble,const LDouble,const LDouble);
-
- static ULONG HOOKCALL SMFilterFunc (REG (a0,struct Hook *),REG (a2,struct ScreenModeRequester *),REG (a1,ULONG));
-
- struct Hook SMFILTERHOOK = {NULL,NULL,(void *) SMFilterFunc,NULL};
-
- struct Border MYBORDER = {0,0,0,0,COMPLEMENT,PAIRS,ZOOMLINE,0};
-
- struct TextAttr MYFONTSTRUCT = {DEF_FONTNAMESTR,DEF_FONTSIZE,FS_NORMAL,FPF_DISKFONT};
-
- struct NewGadget TEXTGAD = {0,0,0,0,0,&MYFONTSTRUCT,0,0,0,0};
-
- struct NewGadget BUTTONGAD = {0,0,0,0,0,&MYFONTSTRUCT,0,0,0,0};
-
- struct NewGadget CHECKBOXGAD = {0,0,0,0,0,&MYFONTSTRUCT,0,0,0,0};
-
- struct BitScaleArgs BSA = {0,0,0,0,0,0,0,0,0,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL};
-
- // struct Chunk COPYRIGHT_CHUNK = {NULL,ID_ILBM,ID_Copyright,sizeof (UBYTE) * strlen (VERSION "by " AUTHOR " " COPYRIGHT_DATE),VERSION "by " AUTHOR " " COPYRIGHT_DATE};
- struct Chunk COPYRIGHT_CHUNK = {NULL,ID_ILBM,ID_Copyright,0,VERSION "by " AUTHOR " " COPYRIGHT_DATE};
-
- struct Chunk USERNAME_CHUNK = {©RIGHT_CHUNK,ID_ILBM,ID_AUTH,sizeof (UBYTE) * MAX_FILELEN,USERNAME};
-
- struct Chunk SPECIAL_CHUNK = {NULL,ID_ILBM,ID_MAND,sizeof (struct MandelChunk),NULL};
-
- UWORD PENS [] = {BLACK,DARK_GREY,WHITE,WHITE,DARK_GREY,LIGHT_GREY,DARK_GREY,LIGHT_GREY,DARK_GREY,WHITE,LIGHT_GREY,DARK_GREY,(UWORD) ~0};
-
- /*
-
- 01 0 DETAILPEN SFONDO
- 02 1 BLOCKPEN TESTO
- 03 1 TEXTPEN TESTO EVIDENZIATO
- 04 2 SHINEPEN BORDI CHIARI
- 05 1 SHADOWPEN BORDI SCURI
- 06 3 FILLPEN BARRA TITOLO FINESTRE ATTIVE
- 07 1 FILLTEXTPEN TITOLO FINESTRE ATTIVE
- 08 0 BACKGROUNDPEN
- 09 2 HIGHLIGHTTEXTPEN
-
- 10 1 BARDETAILPEN TESTO NEI MENU
- 11 2 BARBLOCKPEN SFONDO NEI MENU
- 12 1 BARTRIMPEN
-
- */
-
- ULONG COLORS_ECS [] = {32L << 16,
- 0x00000000,0x00000000,0x00000000,
- 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
- 0xAAAAAAAA,0xAAAAAAAA,0xAAAAAAAA,
- 0x66666666,0x66666666,0x66666666,
- 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
- 0xBBBBBBBB,0xBBBBBBBB,0xBBBBBBBB,
- 0x77777777,0x77777777,0x77777777,
- 0x33333333,0x33333333,0x33333333,
- 0x33333333,0x33333333,0x00000000,
- 0x77777777,0x77777777,0x00000000,
- 0xBBBBBBBB,0xBBBBBBBB,0x00000000,
- 0xFFFFFFFF,0xFFFFFFFF,0x00000000,
- 0x00000000,0xFFFFFFFF,0x00000000,
- 0x00000000,0xBBBBBBBB,0x00000000,
- 0x00000000,0x77777777,0x00000000,
- 0x00000000,0x33333333,0x00000000,
- 0x33333333,0x00000000,0x33333333,
- 0x77777777,0x00000000,0x77777777,
- 0xBBBBBBBB,0x00000000,0xBBBBBBBB,
- 0xFFFFFFFF,0x00000000,0xFFFFFFFF,
- 0xFFFFFFFF,0x00000000,0x00000000,
- 0xBBBBBBBB,0x00000000,0x00000000,
- 0x77777777,0x00000000,0x00000000,
- 0x33333333,0x00000000,0x00000000,
- 0x00000000,0x33333333,0x33333333,
- 0x00000000,0x77777777,0x77777777,
- 0x00000000,0xBBBBBBBB,0xBBBBBBBB,
- 0x00000000,0xFFFFFFFF,0xFFFFFFFF,
- 0x00000000,0x00000000,0xFFFFFFFF,
- 0x00000000,0x00000000,0xBBBBBBBB,
- 0x00000000,0x00000000,0x77777777,
- 0x00000000,0x00000000,0x33333333,
- NULL};
-
-
- ULONG COLORS_AGA [] = {256L << 16,
- 0x00000000,0x00000000,0x00000000, 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF, 0xAAAAAAAA,0xAAAAAAAA,0xAAAAAAAA, 0x66666666,0x66666666,0x66666666,
- 0x9f9f9f9f,0x9f9f9f9f,0x9f9f9f9f, 0xafafafaf,0xafafafaf,0xafafafaf, 0xbfbfbfbf,0xbfbfbfbf,0xbfbfbfbf, 0xcfcfcfcf,0xcfcfcfcf,0xcfcfcfcf,
- 0xdfdfdfdf,0xdfdfdfdf,0xdfdfdfdf, 0xefefefef,0xefefefef,0xefefefef, 0xdfdfdfdf,0xefefefef,0xffffffff, 0xcfcfcfcf,0xdfdfdfdf,0xefefefef,
- 0xbfbfbfbf,0xcfcfcfcf,0xdfdfdfdf, 0xafafafaf,0xbfbfbfbf,0xcfcfcfcf, 0x9f9f9f9f,0xafafafaf,0xbfbfbfbf, 0x8f8f8f8f,0x9f9f9f9f,0xafafafaf,
- 0x7f7f7f7f,0x8f8f8f8f,0x9f9f9f9f, 0x6f6f6f6f,0x7f7f7f7f,0x8f8f8f8f, 0x5f5f5f5f,0x6f6f6f6f,0x7f7f7f7f, 0x4f4f4f4f,0x5f5f5f5f,0x6f6f6f6f,
- 0x3f3f3f3f,0x4f4f4f4f,0x5f5f5f5f, 0x2f2f2f2f,0x3f3f3f3f,0x4f4f4f4f, 0x1f1f1f1f,0x2f2f2f2f,0x3f3f3f3f, 0x0f0f0f0f,0x1f1f1f1f,0x2f2f2f2f,
- 0x00000000,0x0f0f0f0f,0x1f1f1f1f, 0x1f1f1f1f,0x0f0f0f0f,0x1f1f1f1f, 0x2f2f2f2f,0x1f1f1f1f,0x2f2f2f2f, 0x3f3f3f3f,0x2f2f2f2f,0x3f3f3f3f,
- 0x4f4f4f4f,0x3f3f3f3f,0x4f4f4f4f, 0x5f5f5f5f,0x4f4f4f4f,0x5f5f5f5f, 0x6f6f6f6f,0x5f5f5f5f,0x6f6f6f6f, 0x7f7f7f7f,0x6f6f6f6f,0x7f7f7f7f,
- 0x8f8f8f8f,0x7f7f7f7f,0x8f8f8f8f, 0x9f9f9f9f,0x8f8f8f8f,0x9f9f9f9f, 0xafafafaf,0x9f9f9f9f,0xafafafaf, 0xbfbfbfbf,0xafafafaf,0xbfbfbfbf,
- 0xcfcfcfcf,0xbfbfbfbf,0xcfcfcfcf, 0xdfdfdfdf,0xcfcfcfcf,0xdfdfdfdf, 0xefefefef,0xdfdfdfdf,0xefefefef, 0xffffffff,0xefefefef,0xffffffff,
- 0xefefefef,0xffffffff,0xefefefef, 0xdfdfdfdf,0xefefefef,0xdfdfdfdf, 0xcfcfcfcf,0xdfdfdfdf,0xcfcfcfcf, 0xbfbfbfbf,0xcfcfcfcf,0xbfbfbfbf,
- 0xafafafaf,0xbfbfbfbf,0xafafafaf, 0x9f9f9f9f,0xafafafaf,0x9f9f9f9f, 0x8f8f8f8f,0x9f9f9f9f,0x8f8f8f8f, 0x7f7f7f7f,0x8f8f8f8f,0x7f7f7f7f,
- 0x6f6f6f6f,0x7f7f7f7f,0x6f6f6f6f, 0x5f5f5f5f,0x6f6f6f6f,0x5f5f5f5f, 0x4f4f4f4f,0x5f5f5f5f,0x4f4f4f4f, 0x3f3f3f3f,0x4f4f4f4f,0x3f3f3f3f,
- 0x2f2f2f2f,0x3f3f3f3f,0x2f2f2f2f, 0x1f1f1f1f,0x2f2f2f2f,0x1f1f1f1f, 0x0f0f0f0f,0x1f1f1f1f,0x0f0f0f0f, 0x0f0f0f0f,0x1f1f1f1f,0x1f1f1f1f,
- 0x1f1f1f1f,0x2f2f2f2f,0x2f2f2f2f, 0x2f2f2f2f,0x3f3f3f3f,0x3f3f3f3f, 0x3f3f3f3f,0x4f4f4f4f,0x4f4f4f4f, 0x4f4f4f4f,0x5f5f5f5f,0x5f5f5f5f,
- 0x5f5f5f5f,0x6f6f6f6f,0x6f6f6f6f, 0x6f6f6f6f,0x7f7f7f7f,0x7f7f7f7f, 0x7f7f7f7f,0x8f8f8f8f,0x8f8f8f8f, 0x8f8f8f8f,0x9f9f9f9f,0x9f9f9f9f,
- 0x9f9f9f9f,0xafafafaf,0xafafafaf, 0xafafafaf,0xbfbfbfbf,0xbfbfbfbf, 0xbfbfbfbf,0xcfcfcfcf,0xcfcfcfcf, 0xcfcfcfcf,0xdfdfdfdf,0xdfdfdfdf,
- 0xdfdfdfdf,0xefefefef,0xefefefef, 0xefefefef,0xffffffff,0xffffffff, 0xffffffff,0xefefefef,0xefefefef, 0xefefefef,0xdfdfdfdf,0xdfdfdfdf,
- 0xdfdfdfdf,0xcfcfcfcf,0xcfcfcfcf, 0xcfcfcfcf,0xbfbfbfbf,0xbfbfbfbf, 0xbfbfbfbf,0xafafafaf,0xafafafaf, 0xafafafaf,0x9f9f9f9f,0x9f9f9f9f,
- 0x9f9f9f9f,0x8f8f8f8f,0x8f8f8f8f, 0x8f8f8f8f,0x7f7f7f7f,0x7f7f7f7f, 0x7f7f7f7f,0x6f6f6f6f,0x6f6f6f6f, 0x6f6f6f6f,0x5f5f5f5f,0x5f5f5f5f,
- 0x5f5f5f5f,0x4f4f4f4f,0x4f4f4f4f, 0x4f4f4f4f,0x3f3f3f3f,0x3f3f3f3f, 0x3f3f3f3f,0x2f2f2f2f,0x2f2f2f2f, 0x2f2f2f2f,0x1f1f1f1f,0x1f1f1f1f,
- 0x1f1f1f1f,0x0f0f0f0f,0x0f0f0f0f, 0x1f1f1f1f,0x1f1f1f1f,0x0f0f0f0f, 0x2f2f2f2f,0x2f2f2f2f,0x1f1f1f1f, 0x3f3f3f3f,0x3f3f3f3f,0x2f2f2f2f,
- 0x4f4f4f4f,0x4f4f4f4f,0x3f3f3f3f, 0x5f5f5f5f,0x5f5f5f5f,0x4f4f4f4f, 0x6f6f6f6f,0x6f6f6f6f,0x5f5f5f5f, 0x7f7f7f7f,0x7f7f7f7f,0x6f6f6f6f,
- 0x8f8f8f8f,0x8f8f8f8f,0x7f7f7f7f, 0x9f9f9f9f,0x9f9f9f9f,0x8f8f8f8f, 0xafafafaf,0xafafafaf,0x9f9f9f9f, 0xbfbfbfbf,0xbfbfbfbf,0xafafafaf,
- 0xcfcfcfcf,0xcfcfcfcf,0xbfbfbfbf, 0xdfdfdfdf,0xdfdfdfdf,0xcfcfcfcf, 0xefefefef,0xefefefef,0xdfdfdfdf, 0xffffffff,0xffffffff,0xefefefef,
- 0xefefefef,0xefefefef,0xffffffff, 0xdfdfdfdf,0xdfdfdfdf,0xefefefef, 0xcfcfcfcf,0xcfcfcfcf,0xdfdfdfdf, 0xbfbfbfbf,0xbfbfbfbf,0xcfcfcfcf,
- 0xafafafaf,0xafafafaf,0xbfbfbfbf, 0x9f9f9f9f,0x9f9f9f9f,0xafafafaf, 0x8f8f8f8f,0x8f8f8f8f,0x9f9f9f9f, 0x7f7f7f7f,0x7f7f7f7f,0x8f8f8f8f,
- 0x6f6f6f6f,0x6f6f6f6f,0x7f7f7f7f, 0x5f5f5f5f,0x5f5f5f5f,0x6f6f6f6f, 0x4f4f4f4f,0x4f4f4f4f,0x5f5f5f5f, 0x3f3f3f3f,0x3f3f3f3f,0x4f4f4f4f,
- 0x2f2f2f2f,0x2f2f2f2f,0x3f3f3f3f, 0x1f1f1f1f,0x1f1f1f1f,0x2f2f2f2f, 0x0f0f0f0f,0x0f0f0f0f,0x1f1f1f1f, 0x0f0f0f0f,0x0f0f0f0f,0x00000000,
- 0x1f1f1f1f,0x1f1f1f1f,0x00000000, 0x2f2f2f2f,0x2f2f2f2f,0x00000000, 0x3f3f3f3f,0x3f3f3f3f,0x00000000, 0x4f4f4f4f,0x4f4f4f4f,0x00000000,
- 0x5f5f5f5f,0x5f5f5f5f,0x00000000, 0x6f6f6f6f,0x6f6f6f6f,0x00000000, 0x7f7f7f7f,0x7f7f7f7f,0x00000000, 0x8f8f8f8f,0x8f8f8f8f,0x00000000,
- 0x9f9f9f9f,0x9f9f9f9f,0x00000000, 0xafafafaf,0xafafafaf,0x00000000, 0xbfbfbfbf,0xbfbfbfbf,0x00000000, 0xcfcfcfcf,0xcfcfcfcf,0x00000000,
- 0xdfdfdfdf,0xdfdfdfdf,0x00000000, 0xefefefef,0xefefefef,0x00000000, 0xffffffff,0xffffffff,0x00000000, 0xefefefef,0xffffffff,0x00000000,
- 0xdfdfdfdf,0xffffffff,0x00000000, 0xcfcfcfcf,0xffffffff,0x00000000, 0xbfbfbfbf,0xffffffff,0x00000000, 0xafafafaf,0xffffffff,0x00000000,
- 0x9f9f9f9f,0xffffffff,0x00000000, 0x8f8f8f8f,0xffffffff,0x00000000, 0x7f7f7f7f,0xffffffff,0x00000000, 0x6f6f6f6f,0xffffffff,0x00000000,
- 0x5f5f5f5f,0xffffffff,0x00000000, 0x4f4f4f4f,0xffffffff,0x00000000, 0x3f3f3f3f,0xffffffff,0x00000000, 0x2f2f2f2f,0xffffffff,0x00000000,
- 0x1f1f1f1f,0xffffffff,0x00000000, 0x0f0f0f0f,0xffffffff,0x00000000, 0x00000000,0xffffffff,0x00000000, 0x00000000,0xefefefef,0x00000000,
- 0x00000000,0xdfdfdfdf,0x00000000, 0x00000000,0xcfcfcfcf,0x00000000, 0x00000000,0xbfbfbfbf,0x00000000, 0x00000000,0xafafafaf,0x00000000,
- 0x00000000,0x9f9f9f9f,0x00000000, 0x00000000,0x8f8f8f8f,0x00000000, 0x00000000,0x7f7f7f7f,0x00000000, 0x00000000,0x6f6f6f6f,0x00000000,
- 0x00000000,0x5f5f5f5f,0x00000000, 0x00000000,0x4f4f4f4f,0x00000000, 0x00000000,0x3f3f3f3f,0x00000000, 0x00000000,0x2f2f2f2f,0x00000000,
- 0x00000000,0x1f1f1f1f,0x00000000, 0x00000000,0x0f0f0f0f,0x00000000, 0x0f0f0f0f,0x00000000,0x0f0f0f0f, 0x1f1f1f1f,0x00000000,0x1f1f1f1f,
- 0x2f2f2f2f,0x00000000,0x2f2f2f2f, 0x3f3f3f3f,0x00000000,0x3f3f3f3f, 0x4f4f4f4f,0x00000000,0x4f4f4f4f, 0x5f5f5f5f,0x00000000,0x5f5f5f5f,
- 0x6f6f6f6f,0x00000000,0x6f6f6f6f, 0x7f7f7f7f,0x00000000,0x7f7f7f7f, 0x8f8f8f8f,0x00000000,0x8f8f8f8f, 0x9f9f9f9f,0x00000000,0x9f9f9f9f,
- 0xafafafaf,0x00000000,0xafafafaf, 0xbfbfbfbf,0x00000000,0xbfbfbfbf, 0xcfcfcfcf,0x00000000,0xcfcfcfcf, 0xdfdfdfdf,0x00000000,0xdfdfdfdf,
- 0xefefefef,0x00000000,0xefefefef, 0xffffffff,0x00000000,0xffffffff, 0xffffffff,0x00000000,0xefefefef, 0xffffffff,0x00000000,0xdfdfdfdf,
- 0xffffffff,0x00000000,0xcfcfcfcf, 0xffffffff,0x00000000,0xbfbfbfbf, 0xffffffff,0x00000000,0xafafafaf, 0xffffffff,0x00000000,0x9f9f9f9f,
- 0xffffffff,0x00000000,0x8f8f8f8f, 0xffffffff,0x00000000,0x7f7f7f7f, 0xffffffff,0x00000000,0x6f6f6f6f, 0xffffffff,0x00000000,0x5f5f5f5f,
- 0xffffffff,0x00000000,0x4f4f4f4f, 0xffffffff,0x00000000,0x3f3f3f3f, 0xffffffff,0x00000000,0x2f2f2f2f, 0xffffffff,0x00000000,0x1f1f1f1f,
- 0xffffffff,0x00000000,0x0f0f0f0f, 0xffffffff,0x00000000,0x00000000, 0xefefefef,0x00000000,0x00000000, 0xdfdfdfdf,0x00000000,0x00000000,
- 0xcfcfcfcf,0x00000000,0x00000000, 0xbfbfbfbf,0x00000000,0x00000000, 0xafafafaf,0x00000000,0x00000000, 0x9f9f9f9f,0x00000000,0x00000000,
- 0x8f8f8f8f,0x00000000,0x00000000, 0x7f7f7f7f,0x00000000,0x00000000, 0x6f6f6f6f,0x00000000,0x00000000, 0x5f5f5f5f,0x00000000,0x00000000,
- 0x4f4f4f4f,0x00000000,0x00000000, 0x3f3f3f3f,0x00000000,0x00000000, 0x2f2f2f2f,0x00000000,0x00000000, 0x1f1f1f1f,0x00000000,0x00000000,
- 0x0f0f0f0f,0x00000000,0x00000000, 0x00000000,0x0f0f0f0f,0x0f0f0f0f, 0x00000000,0x1f1f1f1f,0x1f1f1f1f, 0x00000000,0x2f2f2f2f,0x2f2f2f2f,
- 0x00000000,0x3f3f3f3f,0x3f3f3f3f, 0x00000000,0x4f4f4f4f,0x4f4f4f4f, 0x00000000,0x5f5f5f5f,0x5f5f5f5f, 0x00000000,0x6f6f6f6f,0x6f6f6f6f,
- 0x00000000,0x7f7f7f7f,0x7f7f7f7f, 0x00000000,0x8f8f8f8f,0x8f8f8f8f, 0x00000000,0x9f9f9f9f,0x9f9f9f9f, 0x00000000,0xafafafaf,0xafafafaf,
- 0x00000000,0xbfbfbfbf,0xbfbfbfbf, 0x00000000,0xcfcfcfcf,0xcfcfcfcf, 0x00000000,0xdfdfdfdf,0xdfdfdfdf, 0x00000000,0xefefefef,0xefefefef,
- 0x00000000,0xffffffff,0xffffffff, 0x00000000,0xefefefef,0xffffffff, 0x00000000,0xdfdfdfdf,0xffffffff, 0x00000000,0xcfcfcfcf,0xffffffff,
- 0x00000000,0xbfbfbfbf,0xffffffff, 0x00000000,0xafafafaf,0xffffffff, 0x00000000,0x9f9f9f9f,0xffffffff, 0x00000000,0x8f8f8f8f,0xffffffff,
- 0x00000000,0x7f7f7f7f,0xffffffff, 0x00000000,0x6f6f6f6f,0xffffffff, 0x00000000,0x5f5f5f5f,0xffffffff, 0x00000000,0x4f4f4f4f,0xffffffff,
- 0x00000000,0x3f3f3f3f,0xffffffff, 0x00000000,0x2f2f2f2f,0xffffffff, 0x00000000,0x1f1f1f1f,0xffffffff, 0x00000000,0x0f0f0f0f,0xffffffff,
- 0x00000000,0x00000000,0xffffffff, 0x00000000,0x00000000,0xefefefef, 0x00000000,0x00000000,0xdfdfdfdf, 0x00000000,0x00000000,0xcfcfcfcf,
- 0x00000000,0x00000000,0xbfbfbfbf, 0x00000000,0x00000000,0xafafafaf, 0x00000000,0x00000000,0x9f9f9f9f, 0x00000000,0x00000000,0x8f8f8f8f,
- 0x00000000,0x00000000,0x7f7f7f7f, 0x00000000,0x00000000,0x6f6f6f6f, 0x00000000,0x00000000,0x5f5f5f5f, 0x00000000,0x00000000,0x4f4f4f4f,
- 0x00000000,0x00000000,0x3f3f3f3f, 0x00000000,0x00000000,0x2f2f2f2f, 0x00000000,0x00000000,0x1f1f1f1f, 0x00000000,0x00000000,0x0f0f0f0f,
- NULL};
-
- CHIP UWORD ZoomPointer [] = {0x0000,0x0000,0x0100,0x0000,0x0100,0x0000,0x0000,0x0100,
- 0x0000,0x0100,0x0100,0x0100,0x0100,0x0100,0x0000,0x0000,
- 0xCC66,0x3C78,0x0000,0x0000,0x0100,0x0100,0x0100,0x0100,
- 0x0000,0x0100,0x0000,0x0100,0x0100,0x0000,0x0100,0x0000,
- 0x0000,0x0000};
-
- struct NewMenu ProgMenu[] = { NM_TITLE,NULL,0,0,0, (APTR) TXT_Project,
-
- NM_ITEM,NULL,"A",NM_ITEMDISABLED,0, (APTR) TXT_About,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"N",NM_ITEMDISABLED,0, (APTR) TXT_SystemInfo,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"H",NM_ITEMDISABLED,0, (APTR) TXT_Help,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"L",NM_ITEMDISABLED,0, (APTR) TXT_LoadPicture,
-
- NM_ITEM,NULL,"S",NM_ITEMDISABLED,0, (APTR) TXT_SavePicture,
-
- NM_ITEM,NULL,"Y",NM_ITEMDISABLED,0, (APTR) TXT_LoadPalette,
-
- NM_ITEM,NULL,"E",NM_ITEMDISABLED,0, (APTR) TXT_SavePalette,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"D",NM_ITEMDISABLED,0, (APTR) TXT_Print,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"Q",NM_ITEMDISABLED,0, (APTR) TXT_Quit,
-
- /***************************************************************************************/
-
- NM_TITLE,NULL,0,0,0, (APTR) TXT_Options,
-
- NM_ITEM,NULL,0,NM_ITEMDISABLED,0, (APTR) TXT_Title,
- NM_SUB,NULL,"O",CHECKIT|MENUTOGGLE|CHECKED,0, (APTR) TXT_TitleBar,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,NULL,"T",0,0, (APTR) TXT_LastTime,
-
- NM_ITEM,NULL,"C",NM_ITEMDISABLED,0, (APTR) TXT_Limits,
-
- NM_ITEM,NULL,0,NM_ITEMDISABLED,0, (APTR) TXT_Iterations,
- NM_SUB,"256",0,CHECKIT,~(1<<0),0,
- NM_SUB,"320",0,CHECKIT|CHECKED,~(1<<1),0,
- NM_SUB,"512",0,CHECKIT,~(1<<2),0,
- NM_SUB,"1024",0,CHECKIT,~(1<<3),0,
- NM_SUB,"2048",0,CHECKIT,~(1<<4),0,
- NM_SUB,"4096",0,CHECKIT,~(1<<5),0,
- NM_SUB,"8192",0,CHECKIT,~(1<<6),0,
- NM_SUB,"16384",0,CHECKIT,~(1<<7),0,
- NM_SUB,"32767",0,CHECKIT,~(1<<8),0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,NULL,"I",CHECKIT,~(1<<10), (APTR) TXT_Custom,
-
- NM_ITEM,NULL,0,NM_ITEMDISABLED,0, (APTR) TXT_ZPower,
- NM_SUB,"2°",0,CHECKIT,~(1<<0),0,
- NM_SUB,"4°",0,CHECKIT,~(1<<1),0,
- NM_SUB,"8°",0,CHECKIT,~(1<<2),0,
- NM_SUB,"16°",0,CHECKIT,~(1<<3),0,
- NM_SUB,"32°",0,CHECKIT,~(1<<4),0,
- NM_SUB,"64°",0,CHECKIT,~(1<<5),0,
- NM_SUB,"128°",0,CHECKIT,~(1<<6),0,
- NM_SUB,"256°",0,CHECKIT,~(1<<7),0,
- NM_SUB,"512°",0,CHECKIT,~(1<<8),0,
- NM_SUB,"1024°",0,CHECKIT,~(1<<9),0,
- NM_SUB,"2048°",0,CHECKIT,~(1<<10),0,
-
- NM_ITEM,NULL,0,0,0, (APTR) TXT_Priority,
- NM_SUB,"-5","%",CHECKIT,~(1<<0),0,
- NM_SUB,"-4","$",CHECKIT,~(1<<1),0,
- NM_SUB,"-3","£",CHECKIT,~(1<<2),0,
- NM_SUB,"-2","\"",CHECKIT,~(1<<3),0,
- NM_SUB,"-1","!",CHECKIT,~(1<<4),0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB," 0","0",CHECKIT,~(1<<6),0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,"+1","1",CHECKIT,~(1<<8),0,
- NM_SUB,"+2","2",CHECKIT,~(1<<9),0,
- NM_SUB,"+3","3",CHECKIT,~(1<<10),0,
- NM_SUB,"+4","4",CHECKIT,~(1<<11),0,
- NM_SUB,"+5","5",CHECKIT,~(1<<12),0,
-
- NM_ITEM,NULL,0,0,0, (APTR) TXT_ColorRemap,
- NM_SUB,NULL,"6",CHECKIT,~(1<<0), (APTR) TXT_Linear,
- NM_SUB,"Ln (x)","7",CHECKIT,~(1<<1),0,
- NM_SUB,NULL,"8",CHECKIT,~(1<<2), (APTR) TXT_Repeated,
- NM_SUB,"Sqrt (x)","9",CHECKIT,~(1<<3),0,
- NM_SUB,"x²-x","&",CHECKIT,~(1<<4),0,
- NM_SUB,"Sqrt (x³-x²-x)","/",CHECKIT,~(1<<5),0,
- NM_SUB,"Sinh (Ln (x³))","(",CHECKIT,~(1<<6),0,
- NM_SUB,"Cosh (Log (x³))",")",CHECKIT,~(1<<7),0,
-
- NM_ITEM,NULL,0,0,0, (APTR) TXT_FractalType,
- NM_SUB,NULL,"J",CHECKIT,~(1<<0), (APTR) TXT_Julia,
- NM_SUB,NULL,"M",CHECKIT,~(1<<1), (APTR) TXT_Mandelbrot,
-
- NM_ITEM,NULL,0,0,0, (APTR) TXT_Processor,
- NM_SUB,"68k","-",CHECKIT,~(1<<0),0,
- NM_SUB,"Ppc","+",CHECKIT,~(1<<1),0,
-
- /***************************************************************************************/
-
- NM_TITLE,NULL,0,0,0, (APTR) TXT_Calculate,
-
- NM_ITEM,NULL,"W",NM_ITEMDISABLED,0, (APTR) TXT_Preview,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"R",NM_ITEMDISABLED,0, (APTR) TXT_Recalculate,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"U",NM_ITEMDISABLED,0, (APTR) TXT_Undo,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"Z",NM_ITEMDISABLED,0, (APTR) TXT_Zoom,
-
- NM_ITEM,NULL,"X",0,0, (APTR) TXT_Stop,
-
- /***************************************************************************************/
-
- NM_TITLE,NULL,0,0,0, (APTR) TXT_Video,
-
- NM_ITEM,NULL,0,NM_ITEMDISABLED,0, (APTR) TXT_Cycle,
- NM_SUB,NULL,">",0,0, (APTR) TXT_Forward,
- NM_SUB,NULL,"<",0,0, (APTR) TXT_Backward,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,NULL,".",0,0, (APTR) TXT_Delay,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"P",NM_ITEMDISABLED,0, (APTR) TXT_Palette,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"V",NM_ITEMDISABLED,0, (APTR) TXT_ScreenMode,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,NULL,"F",NM_ITEMDISABLED,0, (APTR) TXT_FontSettings,
-
- /***************************************************************************************/
-
- // NM_TITLE,"ARexx",0,0,0,0,
-
- // NM_ITEM,"Launch...",0,0,0,0,
-
- NM_END,0,0,0,0,0 };
-
-
- struct Menu *MAINMENU = NULL;
-
- struct BitMap *MYBITMAP = NULL;
-
- struct Task *THISTASK = NULL;
-
- struct TextFont *NEWFONT = NULL;
-
- struct ILBMInfo MYILBM = {0};
-
- LONG IlbmProps[] = { ID_ILBM, ID_BMHD, ID_ILBM, ID_CMAP, ID_ILBM, ID_CAMG, ID_ILBM, ID_MAND, ID_ILBM, ID_AUTH, ID_ILBM, ID_Copyright, TAG_DONE };
-
- LONG IlbmCollects[] = { TAG_DONE };
-
- LONG IlbmStops[] = { ID_ILBM, ID_BODY, TAG_DONE };
-
- void wbmain (struct WBStartup *ArgMsg)
- {
- LONG ReturnCode;
-
- CONST_STRPTR *IconToolTypes;
-
- BPTR OldDir = NULL;
-
- struct WBArg *Wb_Arg = NULL;
-
- struct DiskObject *ActDiskObject = NULL;
-
- #ifndef __STORMGCC__
- PowerPCBase = OpenLibrary (POWERPCNAME,14);
- #endif /*__STORMGCC__*/
-
- Wb_Arg = ArgMsg->sm_ArgList; /* Get first WB-Message */
-
- if (ArgMsg->sm_NumArgs)
- {
- if (Wb_Arg->wa_Lock)
- {
- OldDir = CurrentDir (Wb_Arg->wa_Lock);
-
- if (ActDiskObject = GetDiskObject (Wb_Arg->wa_Name))
- {
- IconToolTypes = (CONST_STRPTR *) ActDiskObject->do_ToolTypes;
-
- MYILBM.Bmhd.w = ArgInt (IconToolTypes,"SCREENWIDTH",DEF_WIDTH);
- MYILBM.Bmhd.h = ArgInt (IconToolTypes,"SCREENHEIGHT",DEF_HEIGHT);
- MYILBM.Bmhd.nPlanes = ArgInt (IconToolTypes,"SCREENDEPTH",MAX_DEPTH);
-
- sscanf (ArgString (IconToolTypes,"SCREENMODE",DEF_MONITORSTR),"%lx",&MYILBM.camg);
-
- RMIN = strtod (ArgString (IconToolTypes,"REALMIN",INIT_DEF_RMINSTR),NULL);
- RMAX = strtod (ArgString (IconToolTypes,"REALMAX",INIT_DEF_RMAXSTR),NULL);
- IMIN = strtod (ArgString (IconToolTypes,"IMAGMIN",INIT_DEF_IMINSTR),NULL);
- IMAX = strtod (ArgString (IconToolTypes,"IMAGMAX",INIT_DEF_IMAXSTR),NULL);
-
- if (ArgInt (IconToolTypes,"USEPPC",FALSE)) MANDChunk.Flags |= PPC_BIT;
-
- else MANDChunk.Flags |= MC68K_BIT;
-
- if (ArgInt (IconToolTypes,"STARTWITHJULIA",FALSE)) MANDChunk.Flags |= JULIA_BIT;
-
- else MANDChunk.Flags |= MANDEL_BIT;
-
- switch (ArgInt (IconToolTypes,"POWER",FALSE))
- {
- case 1: MANDChunk.Power = 0;
-
- break;
-
- case 2: MANDChunk.Power = 1;
-
- break;
-
- case 3: MANDChunk.Power = 2;
-
- break;
-
- case 4: MANDChunk.Power = 3;
-
- break;
-
- case 5: MANDChunk.Power = 4;
-
- break;
-
- case 6: MANDChunk.Power = 5;
-
- break;
-
- case 7: MANDChunk.Power = 6;
-
- break;
-
- case 8: MANDChunk.Power = 7;
-
- break;
-
- case 9: MANDChunk.Power = 8;
-
- break;
-
- case 10: MANDChunk.Power = 9;
-
- break;
-
- case 11: MANDChunk.Power = 10;
-
- break;
-
- default: MANDChunk.Power = 0;
-
- break;
- }
-
- switch (ArgInt (IconToolTypes,"COLORSREMAP",FALSE))
- {
- case 0: MANDChunk.Flags |= LINEAR_BIT;
-
- break;
-
- case 1: MANDChunk.Flags |= LOG_BIT;
-
- break;
-
- case 2: MANDChunk.Flags |= REPEATED_BIT;
-
- break;
-
- case 3: MANDChunk.Flags |= SQUARE_BIT;
-
- break;
-
- case 4: MANDChunk.Flags |= ONE_BIT;
-
- break;
-
- case 5: MANDChunk.Flags |= TWO_BIT;
-
- break;
-
- case 6: MANDChunk.Flags |= THREE_BIT;
-
- break;
-
- case 7: MANDChunk.Flags |= FOUR_BIT;
-
- break;
-
- default: MANDChunk.Flags |= LINEAR_BIT;
-
- break;
- }
-
- JKRE = strtod (ArgString (IconToolTypes,"JULIACONSTREAL",INIT_DEF_JKRESTR),NULL);
- JKIM = strtod (ArgString (IconToolTypes,"JULIACONSTIMAG",INIT_DEF_JKIMSTR),NULL);
-
- strncpy (USERNAME,ArgString (IconToolTypes,"USERNAME",DEF_USERNAMESTR),MAX_FILELEN);
-
- MYFONTSTRUCT.ta_Name = strncpy (MYFONT,ArgString (IconToolTypes,"FONTNAME",DEF_FONTNAMESTR),MAX_FILELEN);
-
- MYFONTSTRUCT.ta_YSize = ArgInt (IconToolTypes,"FONTSIZE",DEF_FONTSIZE);
-
- PRIORITY = ArgInt (IconToolTypes,"STARTPRI",DEF_STARTPRI);
-
- FreeDiskObject (ActDiskObject);
-
- MYILBM.Bmhd.w = MIN (MAX_WIDTH,MAX (MYILBM.Bmhd.w,DEF_WIDTH));
-
- MYILBM.Bmhd.h = MIN (MAX_HEIGHT,MAX (MYILBM.Bmhd.h,DEF_HEIGHT));
-
- MYILBM.Bmhd.nPlanes = MIN (MAX_DEPTH,MAX (MYILBM.Bmhd.nPlanes,MIN_DEPTH));
-
- MYFONTSTRUCT.ta_YSize = MIN (MAX_FONTSIZE,MAX (MYFONTSTRUCT.ta_YSize,MIN_FONTSIZE));
-
- PRIORITY = MIN (5,MAX (PRIORITY,-5));
-
- MYFONTSTRUCT.ta_Flags |= FPF_DESIGNED; /* new for reaction-support */
-
- ReturnCode = MainProg ();
- }
-
- CurrentDir (OldDir);
- }
-
- else goto defaults;
- }
-
- else goto defaults;
-
- #ifndef __STORMGCC__
- if (PowerPCBase) CloseLibrary (PowerPCBase);
- #endif /*__STORMGCC__*/
-
- exit (ReturnCode);
-
- defaults:
-
- MYILBM.camg = DEF_MONITOR;
-
- MYILBM.Bmhd.w = DEF_WIDTH;
-
- MYILBM.Bmhd.h = DEF_HEIGHT;
-
- MYILBM.Bmhd.nPlanes = (CheckGFX () ? MAX_DEPTH : DEF_DEPTH);
-
- MANDChunk.Flags |= (PPC_BIT|LINEAR_BIT|MANDEL_BIT|REAL_BIT);
-
- MANDChunk.Power = 0;
-
- strcpy (USERNAME,DEF_USERNAMESTR);
-
- ReturnCode = MainProg ();
-
- #ifndef __STORMGCC__
- if (PowerPCBase) CloseLibrary (PowerPCBase);
- #endif /*__STORMGCC__*/
-
- exit (ReturnCode);
- }
-
- LONG main (LONG Argc,CONST_STRPTR *Argv)
- {
- LONG ReturnCode;
-
- #ifndef __STORMGCC__
- PowerPCBase = OpenLibrary (POWERPCNAME,14);
- #endif /*__STORMGCC__*/
-
- MYILBM.camg = DEF_MONITOR;
-
- MYILBM.Bmhd.w = DEF_WIDTH;
-
- MYILBM.Bmhd.h = DEF_HEIGHT;
-
- MYILBM.Bmhd.nPlanes = (CheckGFX () ? MAX_DEPTH : DEF_DEPTH);
-
- MANDChunk.Flags |= (PPC_BIT|LINEAR_BIT|MANDEL_BIT|REAL_BIT);
-
- strcpy (USERNAME,DEF_USERNAMESTR);
-
- ReturnCode = MainProg ();
-
- #ifndef __STORMGCC__
- if (PowerPCBase) CloseLibrary (PowerPCBase);
- #endif /*__STORMGCC__*/
-
- return ReturnCode;
- }
-
- LONG MainProg (VOID)
- {
-
- COPYRIGHT_CHUNK.ch_Size = strlen((const char *) COPYRIGHT_CHUNK.ch_Data); /* new for StormGCC-support */
-
- if ((allocsignal = AllocSignal(-1)) == -1) return (10); /* new for reaction-support */
-
- lastsignal = 1 << allocsignal; /**/
-
- CatalogPtr = OpenCatalogA (NULL, FMCATALOGNAME, NULL); /**/
-
- LocalizeMenu ((struct NewMenu *) &ProgMenu); /**/
-
- if (!(RexxSysBase = (struct RxsLib *) OpenLibrary("rexxsyslib.library", 36L))) {return(RETURNVALUE);}
-
- NewList(&ARexxEventList);
-
- ARexxEventList.lh_Type = NT_USER;
-
- CPUINFO = CheckCPU (SysBase->AttnFlags);
-
- if (ModeNotAvailable (MYILBM.camg)) MYILBM.camg = ModeFallBack (MYILBM.camg,MYILBM.Bmhd.w,MYILBM.Bmhd.h,MYILBM.Bmhd.nPlanes);
-
- if (MYILBM.Bmhd.nPlanes > GetMaxPlanes (MYILBM.camg)) MYILBM.Bmhd.nPlanes = GetMaxPlanes (MYILBM.camg);
-
- if (MYILBM.Bmhd.nPlanes < MIN_DEPTH)
- {
- DisplayError (NULL, TXT_ERR_OpenDisplay, 20L);
-
- goto End;
- }
-
- PALETTE = (CheckGFX () ? COLORS_AGA : COLORS_ECS);
-
- if ((RMIN >= RMAX) || (IMIN >= IMAX))
- {
- DEF_RMIN = INIT_DEF_RMIN;
-
- DEF_RMAX = INIT_DEF_RMAX;
-
- DEF_IMIN = INIT_DEF_IMIN;
-
- DEF_IMAX = INIT_DEF_IMAX;
- }
-
- else
- {
- DEF_RMIN = RMIN;
-
- DEF_RMAX = RMAX;
-
- DEF_IMIN = IMIN;
-
- DEF_IMAX = IMAX;
- }
-
- MYILBM.ParseInfo.propchks = IlbmProps;
-
- MYILBM.ParseInfo.collectchks = IlbmCollects;
-
- MYILBM.ParseInfo.stopchks = IlbmStops;
-
- MYILBM.Bmhd.pageWidth = 0;
-
- MYILBM.Bmhd.pageHeight = 0;
-
- MYILBM.stype = CUSTOMSCREEN | SCREENQUIET;
-
- MYILBM.TBState = TMASK & MASK;
-
- MYILBM.ucliptype = OSCAN_TEXT;
-
- MYILBM.EHB = FALSE;
-
- MYILBM.Autoscroll = TRUE;
-
- MYILBM.IFFPFlags = NULL;
-
- if (MAINMENU = CreateMenus (ProgMenu,TAG_END))
- {
- if (MYILBM.Bmhd.nPlanes < 6)
- {
- MAX_ITERATIONS = 256;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,2,1))->Flags &= ~CHECKED;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,2,0))->Flags |= CHECKED;
- }
-
- switch (PRIORITY)
- {
- case -5: ItemAddress (MAINMENU,FULLMENUNUM (1,4,0))->Flags |= CHECKED;
-
- break;
-
- case -4: ItemAddress (MAINMENU,FULLMENUNUM (1,4,1))->Flags |= CHECKED;
-
- break;
-
- case -3: ItemAddress (MAINMENU,FULLMENUNUM (1,4,2))->Flags |= CHECKED;
-
- break;
-
- case -2: ItemAddress (MAINMENU,FULLMENUNUM (1,4,3))->Flags |= CHECKED;
-
- break;
-
- case -1: ItemAddress (MAINMENU,FULLMENUNUM (1,4,4))->Flags |= CHECKED;
-
- break;
-
- case 0: ItemAddress (MAINMENU,FULLMENUNUM (1,4,6))->Flags |= CHECKED;
-
- break;
-
- case 1: ItemAddress (MAINMENU,FULLMENUNUM (1,4,8))->Flags |= CHECKED;
-
- break;
-
- case 2: ItemAddress (MAINMENU,FULLMENUNUM (1,4,9))->Flags |= CHECKED;
-
- break;
-
- case 3: ItemAddress (MAINMENU,FULLMENUNUM (1,4,10))->Flags |= CHECKED;
-
- break;
-
- case 4: ItemAddress (MAINMENU,FULLMENUNUM (1,4,11))->Flags |= CHECKED;
-
- break;
-
- case 5: ItemAddress (MAINMENU,FULLMENUNUM (1,4,12))->Flags |= CHECKED;
-
- break;
- }
-
- SetTaskPri (FindTask (NULL),PRIORITY);
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,3,MANDChunk.Power))->Flags |= CHECKED;
-
- if (MANDChunk.Flags & LINEAR_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & LOG_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & REPEATED_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,2))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & SQUARE_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,3))->Flags |= CHECKED;
-
- if (MANDChunk.Flags & JULIA_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,6,0))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & MANDEL_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,6,1))->Flags |= CHECKED;
-
-
- if (CPUINFO & (CPU_603|CPU_603e|CPU_604|CPU_604e|CPU_620|CPU_G3|CPU_G4|CPU_G5))
- {
- if (MANDChunk.Flags & PPC_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,7,1))->Flags |= CHECKED;
-
- else ItemAddress (MAINMENU,FULLMENUNUM (1,7,0))->Flags |= CHECKED;
- }
-
- else
- {
- ItemAddress (MAINMENU,FULLMENUNUM (1,7,NOSUB))->Flags |= NM_ITEMDISABLED;
-
- MANDChunk.Flags &= ~PPC_BIT;
-
- MANDChunk.Flags |= MC68K_BIT;
-
- }
-
- if (COLORS = MakeDisplay (&MYILBM))
- {
-
- CreateARexxMenu (NULL);
-
- SetARexxMenu (&MYILBM);
-
- COLORS -= RESERVED_PENS;
-
- SaveCoords (MYILBM.win,FALSE);
-
- MANDChunk.LeftEdge = MYILBM.win->LeftEdge;
-
- MANDChunk.TopEdge = MYILBM.win->TopEdge;
-
- MANDChunk.Width = MYILBM.win->Width;
-
- MANDChunk.Height = MYILBM.win->Height;
-
- MANDChunk.RMin = RMIN;
-
- MANDChunk.RMax = RMAX;
-
- MANDChunk.IMin = IMIN;
-
- MANDChunk.IMax = IMAX;
-
- MANDChunk.Iterations = MAX_ITERATIONS;
-
- SPECIAL_CHUNK.ch_Data = &MANDChunk;
-
- PutPointer (MYILBM.win,0,0,0,0,0,BUSY_POINTER);
-
- LaunchIt (&MYILBM, "startup.rexx", "FLASHMANDEL:arexx");
-
- ELAPSEDTIME = DrawFractal (MYILBM.win,MYILBM.win->LeftEdge,MYILBM.win->TopEdge,MYILBM.win->Width,MYILBM.win->Height,TRUE);
-
- PutPointer (MYILBM.win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- SetMenuStart (MYILBM.win);
-
- ShowTime (MYILBM.win,CATSTR(TXT_RenderTime),ELAPSEDTIME);
-
- ModifyIDCMP (MYILBM.win,NULL);
-
- ClearMenuStrip (MYILBM.win);
-
- if (ResourceBase) Do_InfoRequest (MYILBM.win, FMSCREENNAME, 0, 0);
-
- else About (MYILBM.win);
-
- ResetMenuStrip (MYILBM.win,MAINMENU);
-
- ModifyIDCMP (MYILBM.win,IDCMP_STANDARD);
-
- do
- {
- while (HandleEvents (&MYILBM) & NEWDISPLAY_MSG)
- {
- if (SMRequest (&MYILBM))
- {
- if (ZMASK & MASK)
- {
- DrawBorder (MYILBM.wrp,&MYBORDER,0,0);
-
- MASK &= ~ZMASK;
- }
-
- if (MYILBM.win->RPort->BitMap->Depth <= MYILBM.Bmhd.nPlanes)
- {
- MYBITMAP = CopyBitMap (MYILBM.win,MYILBM.win->LeftEdge,MYILBM.win->TopEdge,MYILBM.win->Width,MYILBM.win->Height);
- }
-
- Fade (MYILBM.win,PALETTE,25L,1L,TOBLACK);
-
- CloseDisplay (&MYILBM,VINFO);
-
- MYILBM.Bmhd.pageWidth = 0;
-
- MYILBM.Bmhd.pageHeight = 0;
-
- COLORS = MakeDisplay (&MYILBM);
-
- if (COLORS)
- {
- COLORS -= RESERVED_PENS;
-
- PasteBitMap (MYBITMAP,MYILBM.win,(WORD) GetBitMapAttr (MYBITMAP,BMA_WIDTH),(WORD) GetBitMapAttr (MYBITMAP,BMA_HEIGHT));
-
- if (ResourceBase) res = Do_RenderRequest(MYILBM.win,FMSCREENNAME,0,0);
-
- else res = Choice (MYILBM.win,CATSTR (TITLE_RenderReq),CATSTR (NewScr_TXT_Question));
-
- if (res)
- {
- SetMenuStop (MYILBM.win);
-
- PutPointer (MYILBM.win,0,0,0,0,0,BUSY_POINTER);
-
- ELAPSEDTIME = DrawFractal (MYILBM.win,MYILBM.win->LeftEdge,MYILBM.win->TopEdge,MYILBM.win->Width,MYILBM.win->Height,TRUE);
-
- PutPointer (MYILBM.win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- SetMenuStart (MYILBM.win);
-
- ShowTime (MYILBM.win, CATSTR(TXT_RenderTime),ELAPSEDTIME);
- }
- }
-
- else
- {
- DisplayError(NULL, TXT_ERR_MakeDisplay, 20L);
-
- break;
- }
- }
- }
-
- if (RETURNVALUE >= 20L) break;
-
- if (ForceAbort == FALSE)
- {
-
- if (ResourceBase) res = Do_ExitRequest (MYILBM.win, FMSCREENNAME, 0, 0);
-
- else res = Choice (MYILBM.win, CATSTR(TITLE_ExitReq), CATSTR(Prt_TXT_AreYouSure));
-
- }
-
- else res = TRUE;
-
- } while (! res);
-
- if (BMASK & MASK) FreeBitMapSafety (MYBITMAP);
-
- RemoveARexxMenu (&MYILBM);
-
- FreeARexxMenu ();
- }
-
- else DisplayError (NULL, TXT_ERR_MakeDisplay, 20L);
-
- Fade (MYILBM.win,PALETTE,50L,1L,TOBLACK);
-
- CloseDisplay (&MYILBM,VINFO);
-
- FreeMenus (MAINMENU);
- }
-
- else DisplayError (NULL, TXT_ERR_Menu, 20L);
-
- End:
-
- if (CatalogPtr) CloseCatalog (CatalogPtr); /* new for reaction-support */
-
- if (RexxSysBase) CloseLibrary ((struct Library *) RexxSysBase);
-
- FreeSignal (allocsignal);
-
- return (RETURNVALUE);
- }
-
- /***********************************************************************************************************/
-
- void PutPointer (struct Window *Win,UWORD *PointerImage,LONG Width,LONG Height,LONG XOrigin,LONG YOrigin,UBYTE Type)
- {
- switch (Type)
- {
- case CLEAR_POINTER: SetWindowPointer (Win,TAG_END);
-
- break;
-
- case BUSY_POINTER: SetWindowPointer (Win,WA_BusyPointer,TRUE,TAG_END);
-
- break;
-
- case ZOOM_POINTER: SetPointer (Win,PointerImage,Height,Width,XOrigin,YOrigin);
- }
- }
-
- UBYTE GetMaxPlanes (ULONG ModeID)
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DimensionInfo DimensionInfo;
-
- UBYTE Planes = 0;
-
- DisplayHandle = FindDisplayInfo (ModeID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DimensionInfo,sizeof (struct DimensionInfo),DTAG_DIMS,ModeID))
- {
- Planes = DimensionInfo.MaxDepth;
- }
-
- else DisplayError(NULL, TXT_ERR_DimensionInfo, 20L);
-
- return Planes;
- }
-
- ULONG CheckCPU (ULONG CpuFlags)
- {
- ULONG CpuMask = NULL,PPCMask = NULL;
-
- STRPTR txt_none = CATSTR(TXT_None);
-
- STRPTR txt_builtin = CATSTR(SysI_TXT_68k_FPU);
-
- if (AFF_68060 & CpuFlags) CpuMask |= CPU_060,strcpy (CPU68K_STR,"68060\0");
-
- else if (AFF_68040 & CpuFlags) CpuMask |= CPU_040,strcpy (CPU68K_STR,"68040\0");
-
- else if (AFF_68030 & CpuFlags) CpuMask |= CPU_030,strcpy (CPU68K_STR,"68030\0");
-
- else if (AFF_68020 & CpuFlags) CpuMask |= CPU_020,strcpy (CPU68K_STR,"68020\0");
-
- else if (AFF_68010 & CpuFlags) CpuMask |= CPU_010,strcpy (CPU68K_STR,"68010\0");
-
- else if (! (CpuMask & (CPU_060|CPU_040|CPU_030|CPU_020|CPU_010))) strcpy (CPU68K_STR,"68000\0");
-
- if (AFF_FPU40 & CpuFlags) CpuMask |= FPU_040,strcpy (FPU68K_STR, txt_builtin);
-
- else if (AFF_68882 & CpuFlags) CpuMask |= FPU_882,strcpy (FPU68K_STR,"68882\0");
-
- else if (AFF_68881 & CpuFlags) CpuMask |= FPU_881,strcpy (FPU68K_STR,"68881\0");
-
- else if (! (CpuMask & (FPU_040|FPU_882|FPU_881))) strcpy (FPU68K_STR, txt_none);
-
- if (PowerPCBase)
- {
- PPCMask = GetCPU ();
-
- if (CPUF_603 == PPCMask) CpuMask |= CPU_603,strcpy (CPUPPC_STR,"603\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_603E == PPCMask) CpuMask |= CPU_603e,strcpy (CPUPPC_STR,"603e\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_604 == PPCMask) CpuMask |= CPU_604,strcpy (CPUPPC_STR,"604\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_604E == PPCMask) CpuMask |= CPU_604e,strcpy (CPUPPC_STR,"604e\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_620 == PPCMask) CpuMask |= CPU_620,strcpy (CPUPPC_STR,"620\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_G3 == PPCMask) CpuMask |= CPU_G3,strcpy (CPUPPC_STR,"G3\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_G4 == PPCMask) CpuMask |= CPU_G4,strcpy (CPUPPC_STR,"G4\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- else if (CPUF_G5 == PPCMask) CpuMask |= CPU_G5,strcpy (CPUPPC_STR,"G5\0"),strcpy (FPUPPC_STR, txt_builtin);
-
- // else if (! (CpuMask & (CPU_603|CPU_603e|CPU_604|CPU_604e|CPU_620|CPU_G3|CPU_G4|CPU_G5))) strcpy (CPUPPC_STR, txt_none),strcpy (FPUPPC_STR, txt_none);
-
- else strcpy (CPUPPC_STR, txt_none),strcpy (FPUPPC_STR, txt_none);
- }
-
- return CpuMask;
- }
-
- LONG CheckGFX (VOID)
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DisplayInfo DisplayInfo;
-
- BOOL AGA = FALSE,RTG = FALSE;
-
- ULONG ModeID = (ULONG) INVALID_ID;
-
- if (GetMaxPlanes (LORES_KEY) == MAX_DEPTH) AGA = TRUE;
-
- while (((ModeID = NextDisplayInfo (ModeID)) != INVALID_ID) && RTG == FALSE)
- {
- DisplayHandle = FindDisplayInfo (ModeID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DisplayInfo,sizeof (struct DisplayInfo),DTAG_DISP,ModeID))
- {
- if ((DisplayInfo.PropertyFlags & DIPF_IS_FOREIGN) && (GetMaxPlanes (ModeID) >= MAX_DEPTH)) RTG = TRUE;
- }
- }
-
- if (RTG && AGA) return 3L;
-
- if (RTG) return 2L;
-
- if (AGA) return 1L;
-
- return NULL;
- }
-
- VOID CloseDisplay (struct ILBMInfo *Ilbm,CPTR *VInfo)
- {
- if (PMASK & MASK)
- {
- FreeVec32 (GfxPpcMem);
-
- MASK &= ~PMASK;
- }
-
- if (WMASK & MASK)
- {
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,CLEAR_POINTER);
-
- CloseWindow (Ilbm->win);
-
- Ilbm->win = NULL;
-
- Ilbm->wrp = NULL;
-
- MASK &= ~WMASK;
- }
-
- if (VMASK & MASK)
- {
- FreeVisualInfo (VInfo);
-
- MASK &= ~VMASK;
- }
-
- if (LMASK & MASK)
- {
- FreeVec (PixelLine);
-
- MASK &= ~LMASK;
- }
-
- if (SMASK & MASK)
- {
- FreeReaction (); /* new for reaction-support */
-
- CloseDownDisplay (Ilbm->scr);
-
- CloseScreen (Ilbm->scr);
-
- FreeBitMapSafety (Ilbm->brbitmap);
-
- Ilbm->scr = NULL;
-
- Ilbm->vp = NULL;
-
- Ilbm->srp = NULL;
-
- MASK &= ~SMASK;
- }
-
- if (FMASK & MASK)
- {
- CloseFont (NEWFONT);
-
- MASK &= ~FMASK;
- }
- }
-
- UWORD SetPubScreenName (TEXT *PubScreenName)
- {
- struct Screen *Scr;
-
- UWORD Suffix = 2;
-
- APTR Name = NULL,NameBuf;
-
- if (NameBuf = malloc (MAXPUBSCREENNAME+1))
- {
- Name = NextPubScreen (NULL,NameBuf);
-
- do
- {
- if (! strcmp (Name,PubScreenName)) sprintf (PubScreenName,"FlashMandel.%u",Suffix++);
-
- if (Scr = LockPubScreen (Name))
- {
- Name = NextPubScreen (Scr,NameBuf);
-
- UnlockPubScreen (NULL,Scr);
- }
-
- } while (Name && strcmp (Name,"Workbench"));
- }
-
- free (NameBuf);
-
- return (Suffix - 2);
- }
-
- struct Window *OpenDisplay (struct ILBMInfo *Ilbm,WORD Width,WORD Height,WORD Depth,ULONG ModeID)
- {
- struct Screen *Scr;
-
- struct Window *Win = NULL;
-
- if (Scr = OpenIdScreen (Ilbm,Width,Height,Depth,ModeID))
- {
- Win = OpenWindowTags (NULL,
- WA_Left,Scr->LeftEdge,
- WA_Top,Scr->TopEdge,
- WA_Width,Scr->Width,
- WA_Height,Scr->Height,
- WA_ScreenTitle,VERSION "by " AUTHOR " " COPYRIGHT_DATE,
- WA_CustomScreen,Scr,
- WA_IDCMP,IDCMP_STANDARD,
- WA_Flags,WFLG_STANDARD,
- WA_MouseQueue,1L,
- WA_BusyPointer,TRUE,
- TAG_END);
-
- if (! Win)
- {
- if (Scr) CloseScreen (Scr);
-
- return NULL;
- }
-
- Ilbm->scr = Scr;
-
- Ilbm->win = Win;
-
- Ilbm->vp = &(Scr->ViewPort);
-
- Ilbm->srp = &(Scr->RastPort);
-
- Ilbm->wrp = Win->RPort;
-
- Ilbm->Bmhd.w = Ilbm->win->Width - Ilbm->win->LeftEdge;
-
- Ilbm->Bmhd.h = Ilbm->win->Height - Ilbm->win->TopEdge;
-
- Ilbm->Bmhd.nPlanes = Ilbm->wrp->BitMap->Depth;
- }
-
- return (Win);
- }
-
- struct Screen *OpenIdScreen (struct ILBMInfo *Ilbm,WORD Width,WORD Height,WORD Depth,ULONG ModeID)
- {
- struct Rectangle Spos,DClip,TxtO,StdO,MaxO,UClip;
-
- struct Rectangle *UClipp;
-
- struct Screen *Scr;
-
- struct Task *task = NULL; /* new for reaction-support */
-
- LONG ErrorCode = NULL,TryNew;
-
- ULONG BitMapTag,PassedTags;
-
- if (! Ilbm) return (NULL);
-
- TryNew = ((QueryOverscan (ModeID,&TxtO,OSCAN_TEXT)) && (QueryOverscan (ModeID,&StdO,OSCAN_STANDARD)) && (QueryOverscan (ModeID,&MaxO,OSCAN_MAX)));
-
- if (TryNew)
- {
- if (Ilbm->Video) Ilbm->ucliptype = OSCAN_VIDEO;
-
- if ((Ilbm->ucliptype) && (QueryOverscan (ModeID,&UClip,(LONG) Ilbm->ucliptype))) UClipp = &UClip;
-
- else UClipp = NULL;
-
- ClipIt (Width,Height,&Spos,&DClip,&TxtO,&StdO,&MaxO,UClipp,Ilbm->IFFPFlags & IFFPF_NOCENTER ? TRUE : FALSE);
-
- BitMapTag = ((Ilbm->brbitmap) && (Ilbm->stype & CUSTOMBITMAP)) ? SA_BitMap : TAG_IGNORE;
-
- PassedTags = Ilbm->stags ? TAG_MORE : TAG_IGNORE;
-
- task = (struct Task *) &((struct Process *) FindTask (NULL))->pr_Task; /* new for reaction-support */
-
- SetPubScreenName (FMSCREENNAME);
-
- Scr = OpenScreenTags (NULL,
- SA_DisplayID, ModeID,
- SA_Type, Ilbm->stype,
- SA_Top, Spos.MinY,
- SA_Left, Spos.MinX,
- SA_Width, Width,
- SA_Height, Height,
- SA_Depth, Depth,
- SA_DClip, &DClip,
- SA_AutoScroll, Ilbm->Autoscroll,
- SA_Colors32, PALETTE,
- SA_Pens, PENS,
- SA_Interleaved, TRUE,
- SA_Font, &MYFONTSTRUCT,
- SA_Title, VERSION "by " AUTHOR " " COPYRIGHT_DATE,
- SA_PubName, FMSCREENNAME, /* new for reaction-support */
- SA_PubSig, allocsignal, /* new for reaction-support */
- SA_PubTask, task, /* new for reaction-support */
- // SA_SharePens, TRUE,
- SA_ErrorCode, &ErrorCode,
- SA_ShowTitle, Ilbm->TBState,
- BitMapTag, Ilbm->brbitmap,
- PassedTags, Ilbm->stags,
- TAG_END);
-
- if (! Scr)
- {
- switch (ErrorCode)
- {
- case OSERR_NOMONITOR : DisplayError (NULL, TXT_ERR_NoMonitor, 20L);
-
- break;
-
- case OSERR_NOCHIPS : DisplayError (NULL, TXT_ERR_NoChips, 20L);
-
- break;
-
- case OSERR_NOMEM : DisplayError (NULL, TXT_ERR_NoMem, 20L);
-
- break;
-
- case OSERR_NOCHIPMEM : DisplayError (NULL, TXT_ERR_NoChipMem, 20L);
-
- break;
-
- case OSERR_PUBNOTUNIQUE: DisplayError (NULL, TXT_ERR_PubNotUnique, 20L);
-
- break;
-
- case OSERR_UNKNOWNMODE : DisplayError (NULL, TXT_ERR_UnknownMode, 20L);
-
- break;
-
- case OSERR_TOODEEP : DisplayError (NULL, TXT_ERR_ScreenToDeep, 20L);
-
- break;
-
- case OSERR_ATTACHFAIL : DisplayError (NULL, TXT_ERR_AttachScreen, 20L);
-
- break;
-
- case OSERR_NOTAVAILABLE: DisplayError (NULL, TXT_ERR_ModeNotAvailable, 20L);
-
- break;
-
- default : DisplayError (NULL, TXT_ERR_UnknownErr, 20L);
-
- break;
- }
-
- return NULL;
- }
-
- else
- {
- oldstatus = PubScreenStatus (Scr,0); /* new for reaction-support */
-
- InitReaction (FMSCREENNAME);
- }
- }
-
- else return NULL;
-
- return (Scr);
- }
-
- ULONG ModeFallBack (ULONG OldModeID,WORD Width,WORD Height,WORD Depth)
- {
- struct Screen *PubScreen;
-
- ULONG NewModeID = HIRESLACE_KEY,ModeID;
-
- if (PubScreen = LockPubScreen (NULL))
- {
- NewModeID = GetVPModeID (&(PubScreen->ViewPort));
-
- UnlockPubScreen (NULL,PubScreen);
- }
-
- ModeID = BestModeID (BIDTAG_SourceID, NewModeID,
- BIDTAG_DesiredWidth, Width,
- BIDTAG_DesiredHeight, Height,
- BIDTAG_Depth, Depth,
- TAG_END);
-
- if (ModeID != INVALID_ID) NewModeID = ModeID;
-
- return (NewModeID);
- }
-
- VOID ClipIt (WORD wide,WORD high,struct Rectangle *spos,struct Rectangle *dclip,struct Rectangle *txto, struct Rectangle *stdo,struct Rectangle *maxo, struct Rectangle *uclip,BOOL NoCenter)
- {
- struct Rectangle *besto;
-
- WORD minx, maxx, miny, maxy;
-
- WORD txtw, txth, stdw, stdh, bestw, besth;
-
- /* get the txt, std and max widths and heights */
-
- txtw = txto->MaxX - txto->MinX + 1;
-
- txth = txto->MaxY - txto->MinY + 1;
-
- stdw = stdo->MaxX - stdo->MinX + 1;
-
- stdh = stdo->MaxY - stdo->MinY + 1;
-
- if ((wide <= txtw) && (high <= txth))
- {
- besto = txto;
-
- bestw = txtw;
-
- besth = txth;
- }
-
- else
- {
- besto = stdo;
-
- bestw = stdw;
-
- besth = stdh;
- }
-
- if (uclip)
- {
- *dclip = *uclip;
-
- spos->MinX = uclip->MinX;
-
- spos->MinY = uclip->MinY;
- }
-
- else
- {
- /* CENTER the screen based on best oscan prefs
- * but confine dclip within max oscan limits
- *
- * FIX MinX first */
-
- spos->MinX = minx = besto->MinX - ((wide - bestw) >> 1);
-
- maxx = wide + minx - 1;
-
- if (maxx > maxo->MaxX) maxx = maxo->MaxX; /* too right */
-
- if (minx < maxo->MinX)
- {
- minx = maxo->MinX; /* too left */
-
- /* if we want left edge of screen not clipped */
-
- if (NoCenter) spos->MinX = minx;
- }
-
- /* FIX MinY */
-
- spos->MinY = miny = besto->MinY - ((high - besth) >> 1);
-
- /* if lower than top of txto, move up */
-
- spos->MinY = miny = MIN (spos->MinY,txto->MinY);
-
- maxy = high + miny - 1;
-
- if (maxy > maxo->MaxY) maxy = maxo->MaxY; /* too down */
-
- if (miny < maxo->MinY)
- {
- miny = maxo->MinY; /* too up */
-
- /* if we want top of screen not clipped */
-
- if (NoCenter) spos->MinY = miny;
- }
-
- /* SET up dclip */
-
- dclip->MinX = minx;
-
- dclip->MinY = miny;
-
- dclip->MaxX = maxx;
-
- dclip->MaxY = maxy;
- }
- }
-
- LONG MakeDisplay (struct ILBMInfo *Ilbm)
- {
- static ULONG SAVED_COMPONENT = NULL,SAVED_POSITION = NULL;
-
- if (Ilbm->IFFPFlags & IFFPF_USERMODE) Ilbm->camg = Ilbm->usermodeid;
-
- Ilbm->Bmhd.w = MAX (MIN_WIDTH,Ilbm->Bmhd.w);
-
- Ilbm->Bmhd.h = MAX (MIN_HEIGHT,Ilbm->Bmhd.h);
-
- if (ModeNotAvailable (Ilbm->camg) || (Ilbm->IFFPFlags & IFFPF_BESTFIT))
-
- Ilbm->camg = ModeFallBack (Ilbm->camg,Ilbm->Bmhd.w,Ilbm->Bmhd.h,Ilbm->Bmhd.nPlanes);
-
- Ilbm->Bmhd.nPlanes = MAX (MIN_DEPTH,Ilbm->Bmhd.nPlanes);
-
- if (Ilbm->Bmhd.nPlanes > GetMaxPlanes (Ilbm->camg)) Ilbm->Bmhd.nPlanes = GetMaxPlanes (Ilbm->camg);
-
- if (NEWFONT = OpenDiskFont (&MYFONTSTRUCT)) MASK |= FMASK;
-
- else
- {
- strcpy (MYFONTSTRUCT.ta_Name,DEF_FONTNAMESTR);
-
- MYFONTSTRUCT.ta_YSize = DEF_FONTSIZE;
-
- MYFONTSTRUCT.ta_Style = FS_NORMAL;
-
- MYFONTSTRUCT.ta_Flags = FPF_ROMFONT;
-
- if (NEWFONT = OpenFont (&MYFONTSTRUCT)) MASK |= FMASK;
-
- else
- {
- DisplayError (NULL, TXT_ERR_Font, 20L);
-
- return NULL;
- }
- }
-
- PALETTE [0L] = ((ULONG) (1L << Ilbm->Bmhd.nPlanes) << 16);
-
- if (SAVED_POSITION) PALETTE [SAVED_POSITION] = SAVED_COMPONENT;
-
- SAVED_POSITION = 3L * (1L << Ilbm->Bmhd.nPlanes) + 1;
-
- SAVED_COMPONENT = PALETTE [SAVED_POSITION];
-
- PALETTE [SAVED_POSITION] = NULL;
-
- if (! (OpenDisplay (Ilbm,MAX (Ilbm->Bmhd.pageWidth,Ilbm->Bmhd.w),MAX (Ilbm->Bmhd.pageHeight,Ilbm->Bmhd.h),Ilbm->Bmhd.nPlanes,Ilbm->camg))) return NULL;
-
- MASK |= SMASK;
-
- MASK |= WMASK;
-
- if (! (PixelLine = AllocVec ((((MAX (Ilbm->Bmhd.w,Ilbm->Bmhd.h) + 15) >> 4) << 4),MEMF_CLEAR | MEMF_PUBLIC)))
- {
- DisplayError (NULL, TXT_ERR_NoMem, 20L);
-
- return (NULL);
- }
-
- MASK |= LMASK;
-
- if (! (VINFO = GetVisualInfo (Ilbm->scr,TAG_END)))
- {
- DisplayError (NULL, TXT_ERR_VisualInfo, 20L);
-
- return NULL;
- }
-
- MASK |= VMASK;
-
- if (! (LayoutMenus (MAINMENU,VINFO,GTMN_TextAttr,&MYFONTSTRUCT,GTMN_NewLookMenus,TRUE,TAG_END)))
- {
- DisplayError (NULL, TXT_ERR_Font, 20L);
-
- return NULL;
- }
-
- if (CPUINFO & (CPU_603|CPU_603e|CPU_604|CPU_604e|CPU_620|CPU_G3|CPU_G4|CPU_G5))
- {
- if (GfxPpcMem = AllocVec32 (((((Ilbm->Bmhd.w+15) >> 4) << 4) * (Ilbm->Bmhd.h+1)), MEMF_PUBLIC)) MASK |= PMASK;
-
- else
- {
- ItemAddress (MAINMENU,FULLMENUNUM (1,7,NOSUB))->Flags |= NM_ITEMDISABLED;
-
- MANDChunk.Flags |= MC68K_BIT;
-
- MANDChunk.Flags &= ~PPC_BIT;
- }
- }
-
- SetMenuStrip (Ilbm->win,MAINMENU);
-
- Ilbm->EHB = FALSE;
-
- return (1L << Ilbm->Bmhd.nPlanes);
- }
-
- VOID ShowTime (struct Window *Win,TEXT *String,ULONG Secs)
- {
- if (Secs)
-
- sprintf (BAR_STRING, CATSTR(TXT_AverageSpeed),String,Secs / 3600L,(Secs / 60L) % 60L,Secs % 60L,(LDouble) ((Win->Width - Win->BorderLeft - Win->BorderRight) * (Win->Height - Win->BorderTop - Win->BorderBottom)) / Secs);
-
- else
-
- sprintf (BAR_STRING, CATSTR(TXT_LessThanOne),String);
-
- SetWindowTitles (Win,(TEXT *) ~0,BAR_STRING);
- }
-
- void SaveCoords (struct Window *Win,BOOL ShowMenu)
- {
- URMIN = RMIN;
-
- URMAX = RMAX;
-
- UIMIN = IMIN;
-
- UIMAX = IMAX;
-
- UJKRE = JKRE;
-
- UJKIM = JKIM;
-
- UITERATIONS = MAX_ITERATIONS;
-
- UPOWER = MANDChunk.Power;
-
- UFLAGS = MANDChunk.Flags;
-
- if (ShowMenu) OnMenu (Win,FULLMENUNUM (2,4,NOSUB));
- }
-
- void RestoreCoords (struct Window *Win)
- {
- RMIN = URMIN;
-
- RMAX = URMAX;
-
- IMIN = UIMIN;
-
- IMAX = UIMAX;
-
- JKRE = UJKRE;
-
- JKIM = UJKIM;
-
- MAX_ITERATIONS = UITERATIONS;
-
- MANDChunk.Power = UPOWER;
-
- MANDChunk.Flags = UFLAGS;
-
- CheckMenu (Win);
-
- OffMenu (Win,FULLMENUNUM (2,4,NOSUB));
- }
-
- BOOL NewCoords (struct Window *Win,const WORD a1,const WORD b1,const WORD a2,const WORD b2)
- {
- LDouble KReal,KImag;
-
- if (((a2 - a1) < 2) || ((b2 - b1) < 2)) return FALSE;
-
- KReal = fabs (RMAX-RMIN) / ((LDouble) Win->Width);
-
- KImag = fabs (IMAX-IMIN) / ((LDouble) Win->Height);
-
- SaveCoords (Win,TRUE);
-
- RMAX = RMIN + ((LDouble) a2 * KReal);
-
- IMIN = IMAX - ((LDouble) b2 * KImag);
-
- RMIN += ((LDouble) a1 * KReal);
-
- IMAX -= ((LDouble) b1 * KImag);
-
- return TRUE;
- }
-
- void AdjustRatio (LDouble *RMin,LDouble *IMax,LDouble *RMax,LDouble *IMin,WORD ScrWidth,WORD ScrHeight,BOOL KeepReal)
- {
- LDouble RWidth,IHeight,RCenter,ICenter;
-
- IHeight = *IMax - *IMin;
-
- RWidth = *RMax - *RMin;
-
- if (KeepReal)
- {
- ICenter = *IMin + (IHeight / 2.0);
-
- IHeight = (RWidth * ScrHeight) / ScrWidth;
-
- *IMax = ICenter + (IHeight / 2.0);
-
- *IMin = ICenter - (IHeight / 2.0);
- }
-
- else
- {
- RCenter = *RMin + (RWidth / 2.0);
-
- RWidth = (IHeight * ScrWidth) / ScrHeight;
-
- *RMax = RCenter + (RWidth / 2.0);
-
- *RMin = RCenter - (RWidth / 2.0);
- }
- }
-
- void SystemInfo (struct Window *Win)
- {
- struct EasyStruct MyReq = { sizeof (struct EasyStruct),0, CATSTR(TITLE_SysInfoReq),CATSTR(TXT_SysInfo),CATSTR(TXT_OK)};
-
- EasyRequest (Win,&MyReq,NULL,CPU68K_STR,FPU68K_STR,CPUPPC_STR,FPUPPC_STR,AvailMem (MEMF_CHIP),AvailMem (MEMF_FAST),AvailMem (MEMF_CHIP|MEMF_LARGEST),AvailMem (MEMF_FAST|MEMF_LARGEST));
- }
-
-
- LONG About (struct Window *Win)
- {
- struct EasyStruct MyReq_1 = { sizeof (struct EasyStruct),0,CATSTR(TITLE_InfoReq),CATSTR(TXT_Info),CATSTR(TXT_OKMore)};
-
- struct EasyStruct MyReq_2 = { sizeof (struct EasyStruct),0,CATSTR(TITLE_WorkgroupReq),CATSTR(Work_TXT_Workgroup),CATSTR(TXT_OK)};
-
- LONG More;
-
- More = EasyRequest (Win,&MyReq_1,NULL,VERSION,COPYRIGHT_DATE,AUTHOR,ADDRESS,EMAIL);
-
- if (! More) EasyRequest (Win,&MyReq_2,NULL);
-
- return More;
- }
-
- ULONG Fail (UBYTE *ErrorString,ULONG ErrorLevel)
- {
- DisplayBeep (NULL);
-
- fputs (ErrorString,stdout);
-
- RETURNVALUE = ErrorLevel;
-
- return ErrorLevel;
- }
-
- LONG Choice (struct Window *Win,TEXT *Title,TEXT *String)
- {
- struct EasyStruct MyReq = { sizeof (struct EasyStruct),NULL,0,0, CATSTR(TXT_YesNo)};
-
- MyReq.es_Title = Title;
-
- MyReq.es_TextFormat = String;
-
- return EasyRequest (Win,&MyReq,0);
- }
-
- BOOL ShowCoords (struct Window *Win)
- {
- struct Gadget *GadList = NULL,*StringGad_1,*StringGad_2,*StringGad_3,*StringGad_4,*StringGad_5,*StringGad_6;
-
- struct Gadget *MyButtonGad,*MyCheckBoxGad,*MyGad;
-
- struct Window *GadWin;
-
- struct IntuiMessage *Message;
-
- BOOL End = FALSE,Accept = FALSE,Reset = FALSE,Ratio = FALSE,KeepReal = TRUE;
-
- TEXT String [MAXCHARS];
-
- UWORD MyCode;
-
- ULONG MyClass;
-
- LDouble Tmp_RMIN = RMIN,Tmp_IMAX = IMAX,Tmp_RMAX = RMAX,Tmp_IMIN = IMIN,Tmp_JKRE,Tmp_JKIM;
-
- TEXTGAD.ng_VisualInfo = BUTTONGAD.ng_VisualInfo = CHECKBOXGAD.ng_VisualInfo = VINFO;
-
- StringGad_1 = CreateContext (&GadList);
-
- TEXTGAD.ng_LeftEdge = 118;
-
- TEXTGAD.ng_TopEdge = 20;
-
- TEXTGAD.ng_Width = 194;
-
- TEXTGAD.ng_Height = (MYFONTSTRUCT.ta_YSize * 3L) >> 1;
-
- TEXTGAD.ng_GadgetText = CATSTR(Coord_TXT_Left);
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.16f",RMIN);
-
- StringGad_1 = CreateGadget (STRING_KIND,StringGad_1,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = CATSTR(Coord_TXT_Top);
-
- sprintf (String,"%+2.16f",IMAX);
-
- StringGad_2 = CreateGadget (STRING_KIND,StringGad_1,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = CATSTR(Coord_TXT_Right);
-
- TEXTGAD.ng_Flags = PLACETEXT_RIGHT;
-
- sprintf (String,"%+2.16f",RMAX);
-
- StringGad_3 = CreateGadget (STRING_KIND,StringGad_2,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = CATSTR(Coord_TXT_Bottom);
-
- sprintf (String,"%+2.16f",IMIN);
-
- StringGad_4 = CreateGadget (STRING_KIND,StringGad_3,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (24 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = CATSTR(Coord_TXT_JuliaReal);
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.16f",JKRE);
-
- StringGad_5 = CreateGadget (STRING_KIND,StringGad_4,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = CATSTR(Coord_TXT_JuliaImag);
-
- sprintf (String,"%+2.16f",JKIM);
-
- StringGad_6 = CreateGadget (STRING_KIND,StringGad_5,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- CHECKBOXGAD.ng_LeftEdge = 14;
-
- CHECKBOXGAD.ng_TopEdge = TEXTGAD.ng_TopEdge + TEXTGAD.ng_Height + 24;
-
- CHECKBOXGAD.ng_Width = MYFONTSTRUCT.ta_YSize << 1;
-
- CHECKBOXGAD.ng_Height = MYFONTSTRUCT.ta_YSize + 6;
-
- CHECKBOXGAD.ng_GadgetText = CATSTR(Coord_TXT_KeepAxis);
-
- CHECKBOXGAD.ng_Flags = PLACETEXT_RIGHT;
-
- CHECKBOXGAD.ng_GadgetID = KEEP;
-
- MyCheckBoxGad = CreateGadget (CHECKBOX_KIND,StringGad_6,&CHECKBOXGAD,GTCB_Checked,TRUE,GTCB_Scaled,TRUE,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge = 14;
-
- BUTTONGAD.ng_TopEdge = CHECKBOXGAD.ng_TopEdge + CHECKBOXGAD.ng_Height + 30;
-
- BUTTONGAD.ng_Width = 90;
-
- BUTTONGAD.ng_Height = (MYFONTSTRUCT.ta_YSize * 3) >> 1;
-
- BUTTONGAD.ng_GadgetText = CATSTR(Coord_TXT_Accept);
-
- BUTTONGAD.ng_GadgetID = ACCEPT;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyCheckBoxGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = CATSTR(Coord_TXT_Ratio);
-
- BUTTONGAD.ng_GadgetID = RATIO;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = CATSTR(Coord_TXT_Default);
-
- BUTTONGAD.ng_GadgetID = RESET;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = CATSTR(Coord_TXT_Cancel);
-
- BUTTONGAD.ng_GadgetID = CANCEL;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- if (MyButtonGad)
- {
- GadWin = OpenWindowTags (NULL,WA_Left,Win->LeftEdge + 25,
- WA_Top,Win->TopEdge + 35,
- WA_Width,BUTTONGAD.ng_LeftEdge + BUTTONGAD.ng_Width + 24,
- WA_Height,BUTTONGAD.ng_TopEdge + BUTTONGAD.ng_Height + 35,
- WA_Title,CATSTR(TITLE_CoordReq),
- WA_ScreenTitle,CATSTR(TXT_ScrTitle_Coord),
- WA_CustomScreen,Win->WScreen,
- WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|STRINGIDCMP|BUTTONIDCMP,
- WA_Flags,WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_SIMPLE_REFRESH|WFLG_GIMMEZEROZERO|WFLG_RMBTRAP,
- WA_Gadgets,GadList,
- TAG_END);
- if (GadWin)
- {
- GT_RefreshWindow (GadWin,NULL);
-
- do { WaitPort (GadWin->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (GadWin->UserPort))
- {
- MyGad = (struct Gadget *) Message->IAddress;
-
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
-
- switch (MyClass)
- {
- case IDCMP_REFRESHWINDOW : GT_BeginRefresh (GadWin);
-
- GT_EndRefresh (GadWin,TRUE);
-
- break;
-
- case IDCMP_VANILLAKEY : switch (ToUpper ((ULONG) MyCode))
- {
- case 'L' : ActivateGadget (StringGad_1,GadWin,0);
-
- break;
-
- case 'O' : ActivateGadget (StringGad_2,GadWin,0);
-
- break;
-
- case 'R' : ActivateGadget (StringGad_3,GadWin,0);
-
- break;
-
- case 'T' : ActivateGadget (StringGad_4,GadWin,0);
-
- break;
-
- case 'J' : ActivateGadget (StringGad_5,GadWin,0);
-
- break;
-
- case 'U' : ActivateGadget (StringGad_6,GadWin,0);
-
- break;
-
- case 'A' : Accept = TRUE;
-
- break;
-
- case 'I' : Ratio = TRUE;
-
- break;
-
- case 'D' : Reset = TRUE;
-
- break;
-
- case 'C' : End = TRUE;
-
- break;
-
- case 'X' : KeepReal = ! KeepReal;
-
- GT_SetGadgetAttrs (MyCheckBoxGad,GadWin,NULL,GTCB_Checked,KeepReal,TAG_END);
-
- break;
-
- case VAN_ESC: End = TRUE;
- }
-
- break;
-
- case IDCMP_GADGETUP : switch (MyGad->GadgetID)
- {
- case ACCEPT: Accept = TRUE;
-
- break;
-
- case RATIO: Ratio = TRUE;
-
- break;
-
- case RESET: Reset = TRUE;
-
- break;
-
- case KEEP: KeepReal = ! KeepReal;
-
- break;
-
- case CANCEL: End = TRUE;
- }
-
- break;
-
- case IDCMP_CLOSEWINDOW : End = TRUE;
- }
-
- if (Accept)
- {
-
- Tmp_RMIN = strtod (((struct StringInfo *) StringGad_1->SpecialInfo)->Buffer,NULL);
-
- Tmp_IMAX = strtod (((struct StringInfo *) StringGad_2->SpecialInfo)->Buffer,NULL);
-
- Tmp_RMAX = strtod (((struct StringInfo *) StringGad_3->SpecialInfo)->Buffer,NULL);
-
- Tmp_IMIN = strtod (((struct StringInfo *) StringGad_4->SpecialInfo)->Buffer,NULL);
-
- Tmp_JKRE = strtod (((struct StringInfo *) StringGad_5->SpecialInfo)->Buffer,NULL);
-
- Tmp_JKIM = strtod (((struct StringInfo *) StringGad_6->SpecialInfo)->Buffer,NULL);
-
- if ((Tmp_RMIN >= Tmp_RMAX) || (Tmp_IMIN >= Tmp_IMAX)) DisplayBeep (Win->WScreen);
-
- else
- {
- SaveCoords (Win,FALSE);
-
- RMIN = Tmp_RMIN; IMAX = Tmp_IMAX; RMAX = Tmp_RMAX; IMIN = Tmp_IMIN; JKRE = Tmp_JKRE; JKIM = Tmp_JKIM;
-
- End = TRUE;
- }
- }
-
- if (Ratio)
- {
- Tmp_RMIN = strtod (((struct StringInfo *) StringGad_1->SpecialInfo)->Buffer,NULL);
-
- Tmp_IMAX = strtod (((struct StringInfo *) StringGad_2->SpecialInfo)->Buffer,NULL);
-
- Tmp_RMAX = strtod (((struct StringInfo *) StringGad_3->SpecialInfo)->Buffer,NULL);
-
- Tmp_IMIN = strtod (((struct StringInfo *) StringGad_4->SpecialInfo)->Buffer,NULL);
-
- Tmp_JKRE = strtod (((struct StringInfo *) StringGad_5->SpecialInfo)->Buffer,NULL);
-
- Tmp_JKIM = strtod (((struct StringInfo *) StringGad_6->SpecialInfo)->Buffer,NULL);
-
- if ((Tmp_RMIN >= Tmp_RMAX) || (Tmp_IMIN >= Tmp_IMAX)) DisplayBeep (Win->WScreen);
-
- else AdjustRatio (&Tmp_RMIN,&Tmp_IMAX,&Tmp_RMAX,&Tmp_IMIN,Win->Width,Win->Height,KeepReal);
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.16f",Tmp_RMIN);
-
- GT_SetGadgetAttrs (StringGad_1,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",Tmp_IMAX);
-
- GT_SetGadgetAttrs (StringGad_2,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",Tmp_RMAX);
-
- TEXTGAD.ng_Flags = PLACETEXT_RIGHT;
-
- GT_SetGadgetAttrs (StringGad_3,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",Tmp_IMIN);
-
- GT_SetGadgetAttrs (StringGad_4,GadWin,NULL,GTST_String,String,TAG_END);
-
- Ratio = FALSE;
- }
-
- if (Reset)
- {
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.16f",DEF_RMIN);
-
- GT_SetGadgetAttrs (StringGad_1,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",DEF_IMAX);
-
- GT_SetGadgetAttrs (StringGad_2,GadWin,NULL,GTST_String,String,TAG_END);
-
- TEXTGAD.ng_Flags = PLACETEXT_RIGHT;
-
- sprintf (String,"%+2.16f",DEF_RMAX);
-
- GT_SetGadgetAttrs (StringGad_3,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",DEF_IMIN);
-
- GT_SetGadgetAttrs (StringGad_4,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",DEF_JKRE);
-
- GT_SetGadgetAttrs (StringGad_5,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.16f",DEF_JKIM);
-
- GT_SetGadgetAttrs (StringGad_6,GadWin,NULL,GTST_String,String,TAG_END);
-
- Reset = FALSE;
- }
- }
-
- } while (End == FALSE);
-
- CloseWindow (GadWin);
- }
-
- else DisplayError (NULL, TXT_ERR_WindowGadget, 15L);
-
- }
-
- else DisplayError (NULL, TXT_ERR_Gadget, 15L);
-
- FreeGadgets (GadList);
-
- return Accept;
- }
-
- ULONG IntegerGad (struct Window *Win,TEXT *TitleWin,TEXT *TitleScr,TEXT *TxtString,ULONG Var)
- {
- struct IntuiMessage *Message;
-
- struct Gadget *GadList = NULL,*MyIntGad,*MyButtonGad,*MyGad;
-
- struct Window *GadWin;
-
- BOOL End = FALSE;
-
- UWORD MyCode;
-
- ULONG MyClass,ReturnValue = Var;
-
- TEXTGAD.ng_VisualInfo = BUTTONGAD.ng_VisualInfo = VINFO;
-
- MyIntGad = CreateContext (&GadList);
-
- TEXTGAD.ng_LeftEdge = 170;
-
- TEXTGAD.ng_TopEdge = 20;
-
- TEXTGAD.ng_Width = 90;
-
- TEXTGAD.ng_Height = (MYFONTSTRUCT.ta_YSize * 3L) >> 1L;
-
- TEXTGAD.ng_GadgetText = TxtString;
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- MyIntGad = CreateGadget (INTEGER_KIND,MyIntGad,&TEXTGAD,GTIN_Number,Var,GTIN_MaxChars,6,STRINGA_ReplaceMode,TRUE,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge = 20;
-
- BUTTONGAD.ng_TopEdge = TEXTGAD.ng_TopEdge + TEXTGAD.ng_Height + 30;
-
- BUTTONGAD.ng_Width = 90;
-
- BUTTONGAD.ng_Height = (MYFONTSTRUCT.ta_YSize * 3L) >> 1L;
-
- BUTTONGAD.ng_GadgetText = CATSTR(Cyc_TXT_Accept);
-
- BUTTONGAD.ng_GadgetID = ACCEPT;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyIntGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (60 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = CATSTR(Cyc_TXT_Cancel);
-
- BUTTONGAD.ng_GadgetID = CANCEL;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- if (MyButtonGad)
- {
- GadWin = OpenWindowTags (NULL,WA_Left,Win->LeftEdge + 25,
- WA_Top,Win->TopEdge + 35,
- WA_Width,BUTTONGAD.ng_LeftEdge + BUTTONGAD.ng_Width + 30,
- WA_Height,BUTTONGAD.ng_TopEdge + BUTTONGAD.ng_Height + 35,
- WA_Title,TitleWin,
- WA_ScreenTitle,TitleScr,
- WA_CustomScreen,Win->WScreen,
- WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|INTEGERIDCMP|BUTTONIDCMP,
- WA_Flags,WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_SIMPLE_REFRESH|WFLG_GIMMEZEROZERO|WFLG_RMBTRAP,
- WA_Gadgets,GadList,
- TAG_END);
-
- if (GadWin)
- {
- GT_RefreshWindow (GadWin,NULL);
-
- do { WaitPort (GadWin->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (GadWin->UserPort))
- {
- MyGad = (struct Gadget *) Message->IAddress;
-
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
-
- switch (MyClass)
- {
- case IDCMP_REFRESHWINDOW : GT_BeginRefresh (GadWin);
-
- GT_EndRefresh (GadWin,TRUE);
-
- break;
-
- case IDCMP_VANILLAKEY : switch (ToUpper ((ULONG) MyCode))
- {
- case 'E' :
-
- case 'I' : ActivateGadget (MyIntGad,GadWin,0);
-
- break;
-
- case 'A' : ReturnValue = ((struct StringInfo *) MyIntGad->SpecialInfo)->LongInt;
-
- End = TRUE;
-
- break;
-
- case 'C' : End = TRUE;
-
- break;
-
- case VAN_ESC: End = TRUE;
- }
-
- break;
-
- case IDCMP_GADGETUP : switch (MyGad->GadgetID)
- {
- case ACCEPT : ReturnValue = ((struct StringInfo *) MyIntGad->SpecialInfo)->LongInt;
-
- End = TRUE;
-
- break;
-
- case CANCEL : End = TRUE;
- }
-
- break;
-
- case IDCMP_CLOSEWINDOW : End = TRUE;
- }
- }
-
- } while (End == FALSE);
-
- CloseWindow (GadWin);
- }
-
- else DisplayError (NULL, TXT_ERR_Window, 15L);
- }
-
- else DisplayError (NULL, TXT_ERR_Gadget, 15L);
-
- FreeGadgets (GadList);
-
- return ReturnValue;
- }
-
- UBYTE LinearRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor ((Iterations * MaxColors) / MaxIterations));
- }
-
- UBYTE LogRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor ((log (Iterations) * MaxColors) / log (MaxIterations)));
- }
-
- UBYTE RepeatedRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) ceil (MaxColors - fmod (MaxIterations - Iterations,MaxColors) - 1.0));
- }
-
- UBYTE SquareRootRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor ((sqrt (Iterations) * MaxColors) / sqrt (MaxIterations)));
- }
-
- UBYTE OneRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor (((Iterations * Iterations - Iterations) * MaxColors) / (MaxIterations * MaxIterations - MaxIterations)));
- }
-
- UBYTE TwoRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor ((sqrt (pow (Iterations,3.0) - Iterations * Iterations - Iterations) * MaxColors) / sqrt (pow (MaxIterations,3.0) - MaxIterations * MaxIterations - MaxIterations)));
- }
-
- UBYTE ThreeRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor ((sinh (log (pow (Iterations,3.0))) * MaxColors) / (sinh (log (pow (MaxIterations,3.0))))));
- }
-
- UBYTE FourRemap (const LDouble Iterations,const LDouble MaxColors,const LDouble MaxIterations)
- {
- return ((UBYTE) floor ((cosh (log10 (pow (Iterations,3.0))) * MaxColors) / (cosh (log10 (pow (MaxIterations,3.0))))));
- }
-
- void MVLine (struct RastPort *Rp,const WORD b1,const WORD b2,const WORD x)
- {
- REGISTER WORD y;
-
- REGISTER UWORD Color;
-
- CRE = RMIN + (((LDouble) x) * INCREMREAL);
-
- CIM = IMAX - (((LDouble) b2) * INCREMIMAG);
-
- for (y = b2; y >= b1; y--)
- {
-
- #ifdef NO_68K_FPU
- Color = Mandeln68K_NoFPU (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM);
- #endif
-
- #ifdef USE_68K_FPU_MATH
- Color = Mandeln68K (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM);
- #endif
-
- #ifdef FIXEDPOINT_MATH
- Color = Mandeln68K_Fixed (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM);
- #endif
-
- if (Color) Color = COLORREMAP (Color,COLORS,MAX_ITERATIONS+1) + RESERVED_PENS;
-
- SetAPen (Rp,Color);
-
- CIM += INCREMIMAG;
-
- WritePixel (Rp,x,y);
- }
- }
-
- void MHLine (struct RastPort *Rp,const WORD a1,const WORD a2,const WORD y)
- {
- REGISTER WORD x;
-
- REGISTER UBYTE *TmpArray;
-
- REGISTER UWORD Color;
-
- CRE = RMIN + (((LDouble) a1) * INCREMREAL);
-
- TmpArray = PixelLine;
-
- CIM = IMAX - (((LDouble) y) * INCREMIMAG);
-
- for (x = a1; x <= a2; x++)
- {
-
- #ifdef NO_68K_FPU
- Color = Mandeln68K_NoFPU (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM);
- #endif
-
- #ifdef USE_68K_FPU_MATH
- Color = Mandeln68K (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM);
- #endif
-
- #ifdef FIXEDPOINT_MATH
- Color = Mandeln68K_Fixed (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM);
- #endif
-
- if (Color) Color = COLORREMAP (Color,COLORS,MAX_ITERATIONS+1) + RESERVED_PENS;
-
- CRE += INCREMREAL;
-
- *TmpArray++ = Color;
- }
-
- WriteChunkyPixels (Rp,a1,y,a2,y,PixelLine,a2-a1);
- }
-
- void JVLine (struct RastPort *Rp,const WORD b1,const WORD b2,const WORD x)
- {
- REGISTER WORD y;
-
- REGISTER UWORD Color;
-
- CRE = RMIN + (((LDouble) x) * INCREMREAL);
-
- CIM = IMAX - (((LDouble) b2) * INCREMIMAG);
-
- for (y = b2; y >= b1; y--)
- {
-
- #ifdef NO_68K_FPU
- Color = Julian68K_NoFPU (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM,JKRE,JKIM);
- #endif
-
- #ifdef USE_68K_FPU_MATH
- Color = Julian68K (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM,JKRE,JKIM);
- #endif
-
- #ifdef FIXEDPOINT_MATH
- Color = Julian68K_Fixed (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM,JKRE,JKIM);
- #endif
-
- if (Color) Color = COLORREMAP (Color,COLORS,MAX_ITERATIONS+1) + RESERVED_PENS;
-
- SetAPen (Rp,Color);
-
- CIM += INCREMIMAG;
-
- WritePixel (Rp,x,y);
- }
- }
-
- void JHLine (struct RastPort *Rp,const WORD a1,const WORD a2,const WORD y)
- {
- REGISTER WORD x;
-
- REGISTER UBYTE *TmpArray;
-
- REGISTER UWORD Color;
-
- CRE = RMIN + (((LDouble) a1) * INCREMREAL);
-
- TmpArray = PixelLine;
-
- CIM = IMAX - (((LDouble) y) * INCREMIMAG);
-
- for (x = a1; x <= a2; x++)
- {
-
- #ifdef NO_68K_FPU
- Color = Julian68K_NoFPU (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM,JKRE,JKIM);
- #endif
-
- #ifdef USE_68K_FPU_MATH
- Color = Julian68K (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM,JKRE,JKIM);
- #endif
-
- #ifdef FIXEDPOINT_MATH
- Color = Julian68K_Fixed (MAX_ITERATIONS,MANDChunk.Power,CRE,CIM,JKRE,JKIM);
- #endif
-
- if (Color) Color = COLORREMAP (Color,COLORS,MAX_ITERATIONS+1) + RESERVED_PENS;
-
- CRE += INCREMREAL;
-
- *TmpArray++ = Color;
- }
-
- WriteChunkyPixels (Rp,a1,y,a2,y,PixelLine,a2-a1);
- }
-
- BOOL CheckBox (struct RastPort *Rp,const WORD a1,const WORD b1,const WORD a2,const WORD b2)
- {
- const LONG Color = ReadPixel (Rp,a1,b1);
-
- REGISTER WORD Var;
-
- if (Color != ReadPixel (Rp,a2,b2)) return FALSE;
-
- if (Color != ReadPixel (Rp,a2,b1)) return FALSE;
-
- if (Color != ReadPixel (Rp,a1,b2)) return FALSE;
-
- for (Var = (a1 + 1); Var < a2; Var++)
- {
- if (Color != ReadPixel (Rp,Var,b1)) return FALSE;
-
- if (Color != ReadPixel (Rp,Var,b2)) return FALSE;
- }
-
- for (Var = (b1 + 1); Var < b2; Var++)
- {
- if (Color != ReadPixel (Rp,a1,Var)) return FALSE;
-
- if (Color != ReadPixel (Rp,a2,Var)) return FALSE;
- }
-
- return TRUE;
- }
-
- void BlinkRect (struct Window *Win,const WORD LeftEdge,const WORD TopEdge,const WORD RightEdge,const WORD BottomEdge)
- {
- UBYTE Blink = BLINKTIMES;
-
- DisplayBeep (Win->WScreen);
-
- ZOOMLINE [8] = ZOOMLINE [0] = ZOOMLINE [6] = LeftEdge;
-
- ZOOMLINE [1] = ZOOMLINE [3] = ZOOMLINE [9] = TopEdge;
-
- ZOOMLINE [2] = ZOOMLINE [4] = RightEdge;
-
- ZOOMLINE [5] = ZOOMLINE [7] = BottomEdge;
-
- while (Blink--)
- {
- DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- Delay (8L);
-
- DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- Delay (8L);
- }
- }
-
- BOOL RectangleDraw (struct Window *Win,const WORD a1,const WORD b1,const WORD a2,const WORD b2)
- {
- struct IntuiMessage *Message;
-
- UWORD MyCode;
-
- WORD helpx,helpy;
-
- ULONG MyClass;
-
- if ((helpx = (a2 - a1)) < MINLIMIT) return FALSE;
-
- if ((helpy = (b2 - b1)) < MINLIMIT) return FALSE;
-
- if (Win->UserPort->mp_SigBit)
- {
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
-
- switch (MyClass)
- {
- case IDCMP_MENUPICK : if (MyCode != MENUNULL)
- {
- if (ProcessMenu (Win,MyCode) & STOP_MSG) return TRUE;
- }
-
- break;
-
- case IDCMP_RAWKEY : if (MyCode == TAB)
- {
- BlinkRect (Win,a1,b1,a2,b2);
-
- return FALSE;
- }
-
- if (MyCode == RAW_ESC)
- {
- DisplayBeep (Win->WScreen);
-
- return TRUE;
- }
-
- break;
-
- case IDCMP_CLOSEWINDOW : return TRUE;
- }
- }
- }
-
- if (CheckBox (Win->RPort,a1,b1,a2,b2))
- {
- SetAPen (Win->RPort,ReadPixel (Win->RPort,a1,b1));
-
- RectFill (Win->RPort,a1+1,b1+1,a2-1,b2-1);
-
- return FALSE;
- }
-
- if ((helpx < (MINLIMIT * 2)) || (helpy < (MINLIMIT * 2)))
- {
- for (helpx = (a1 + 1); helpx < a2; helpx++)
- {
- (*V_LINE) (Win->RPort,b1+1,b2-1,helpx);
- }
-
- return FALSE;
- }
-
- if (helpx > helpy)
- {
- helpx = (a1 + a2) >> 1;
-
- (*V_LINE) (Win->RPort,b1+1,b2-1,helpx);
-
- if (RectangleDraw (Win,a1,b1,helpx,b2)) return TRUE;
-
- if (RectangleDraw (Win,helpx,b1,a2,b2)) return TRUE;
- }
-
- else
- {
- helpy = (b1 + b2) >> 1;
-
- (*H_LINE) (Win->RPort,a1+1,a2-1,helpy);
-
- if (RectangleDraw (Win,a1,b1,a2,helpy)) return TRUE;
-
- if (RectangleDraw (Win,a1,helpy,a2,b2)) return TRUE;
-
- }
-
- return FALSE;
- }
-
- void CalcFractal (struct Window *Win,const WORD a1,const WORD b1,const WORD a2,const WORD b2)
- {
- if (MANDChunk.Flags & JULIA_BIT)
- {
- H_LINE = JHLine;
-
- V_LINE = JVLine;
- }
-
- else if (MANDChunk.Flags & MANDEL_BIT)
- {
- H_LINE = MHLine;
-
- V_LINE = MVLine;
- }
-
- if (MANDChunk.Flags & LINEAR_BIT) COLORREMAP = LinearRemap;
-
- else if (MANDChunk.Flags & LOG_BIT) COLORREMAP = LogRemap;
-
- else if (MANDChunk.Flags & REPEATED_BIT) COLORREMAP = RepeatedRemap;
-
- else if (MANDChunk.Flags & SQUARE_BIT) COLORREMAP = SquareRootRemap;
-
- else if (MANDChunk.Flags & ONE_BIT) COLORREMAP = OneRemap;
-
- else if (MANDChunk.Flags & TWO_BIT) COLORREMAP = TwoRemap;
-
- else if (MANDChunk.Flags & THREE_BIT) COLORREMAP = ThreeRemap;
-
- else if (MANDChunk.Flags & FOUR_BIT) COLORREMAP = FourRemap;
-
- INCREMREAL = (fabs (RMAX-RMIN)) / ((LDouble) (a2 - a1 + 1));
-
- INCREMIMAG = (fabs (IMAX-IMIN)) / ((LDouble) (b2 - b1 + 1));
-
- (*H_LINE) (Win->RPort,a1,a2,b1);
-
- (*V_LINE) (Win->RPort,b1+1,b2-1,a2);
-
- (*H_LINE) (Win->RPort,a1,a2,b2);
-
- (*V_LINE) (Win->RPort,b1+1,b2-1,a1);
-
- RectangleDraw (Win,a1,b1,a2,b2);
- }
-
- ULONG DrawFractal (struct Window *Win,const WORD a1,const WORD b1,const WORD a2,const WORD b2, BOOL BeepWhenReady)
- {
- ULONG StartSec = NULL , EndSec = NULL , Dummy = NULL;
-
- CurrentTime (&StartSec,&Dummy);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,FALSE);
-
- if (MANDChunk.Flags & PPC_BIT)
- {
- MANDChunk.LeftEdge = a1;
-
- MANDChunk.TopEdge = b1;
-
- MANDChunk.Width = a2-1;
-
- MANDChunk.Height = b2-1;
-
- MANDChunk.RMin = RMIN;
-
- MANDChunk.RMax = RMAX;
-
- MANDChunk.IMin = IMIN;
-
- MANDChunk.IMax = IMAX;
-
- MANDChunk.JKre = JKRE;
-
- MANDChunk.JKim = JKIM;
-
- MANDChunk.Iterations = MAX_ITERATIONS;
-
- MANDChunk.Colors = COLORS;
-
- MANDChunk.Modulo = a2 - a1 + Win->BorderLeft + Win->BorderRight;
-
- CalcFractalPPC (&MANDChunk,GfxPpcMem);
-
- WriteChunkyPixels (Win->RPort,MANDChunk.LeftEdge,MANDChunk.TopEdge,MANDChunk.Width,MANDChunk.Height,GfxPpcMem,MANDChunk.Modulo);
- }
-
- if (MANDChunk.Flags & MC68K_BIT) CalcFractal (Win,a1,b1,a2-1,b2-1);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,TRUE);
-
- CurrentTime (&EndSec,&Dummy);
-
- if (BeepWhenReady == TRUE) DisplayBeep (Win->WScreen);
-
- return (EndSec-StartSec);
- }
-
- BOOL Preview (struct Window *Win,LONG Width,LONG Height)
- {
- struct Window *PreviewWin;
-
- struct IntuiMessage *Message;
-
- BOOL Error = FALSE;
-
- UWORD MyCode;
-
- ULONG MyClass;
-
- MYBITMAP = CopyBitMap (Win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- PreviewWin = OpenWindowTags (0,WA_Left,Win->LeftEdge + 25,
- WA_Top,Win->TopEdge + 35,
- WA_Width,Width / 2,
- WA_Height,Height / 2,
- WA_Title, CATSTR(TXT_PreviewTitle),
- WA_ScreenTitle,"¼ Window preview...",
- WA_CustomScreen,Win->WScreen,
- WA_IDCMP,IDCMP_RAWKEY|IDCMP_CLOSEWINDOW,
- WA_Flags,WFLG_ACTIVATE|WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_NOCAREREFRESH|WFLG_SMART_REFRESH|WFLG_RMBTRAP|WFLG_GIMMEZEROZERO,
- WA_BusyPointer,TRUE,
- TAG_END);
- if (PreviewWin)
- {
- PasteBitMap (MYBITMAP,PreviewWin,ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- PutPointer (PreviewWin,0,0,0,0,0,BUSY_POINTER);
-
- ELAPSEDTIME = DrawFractal (PreviewWin,0,0,PreviewWin->GZZWidth,PreviewWin->GZZHeight,TRUE);
-
- PutPointer (PreviewWin,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- ShowTime (PreviewWin, CATSTR(TXT_PreviewTime),ELAPSEDTIME);
-
- while (1L)
- {
- WaitPort (PreviewWin->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (PreviewWin->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
-
- if (MyClass == IDCMP_CLOSEWINDOW) break;
-
- if ((MyClass == IDCMP_RAWKEY) && (MyCode == RAW_ESC)) break;
- }
- }
-
- PutPointer (PreviewWin,0,0,0,0,0,CLEAR_POINTER);
-
- CloseWindow (PreviewWin);
- }
-
- else
- {
- if (BMASK & MASK)
- {
- FreeBitMapSafety (MYBITMAP);
-
- MASK &= ~BMASK;
- }
-
- DisplayError(Win, TXT_ERR_PreviewWindow, 15L);
-
- Error = TRUE;
- }
-
- return Error;
- }
-
- BOOL DrawFrame (struct Window *Win,const WORD Zx,const WORD Zy,const WORD Zw,const WORD Zh)
- {
- WORD LeftEdge,TopEdge,RightEdge,BottomEdge;
-
- if ((Zx > 2) && (Zy > 2) && (Zx < Win->Width - 2) && (Zy < Win->Height - 2) && ((Zw >= INITIALZOOM) || (Zh >= INITIALZOOM)))
- {
- LeftEdge = Zx - Zw;
-
- TopEdge = Zy - Zh;
-
- RightEdge = Zx + Zw;
-
- BottomEdge = Zy + Zh;
-
- if ((LeftEdge >= 0) && (TopEdge >= 0) && (RightEdge <= Win->Width) && (BottomEdge <= Win->Height))
- {
- ZOOMLINE [8] = ZOOMLINE [0] = ZOOMLINE [6] = LeftEdge;
-
- ZOOMLINE [1] = ZOOMLINE [3] = ZOOMLINE [9] = TopEdge;
-
- ZOOMLINE [2] = ZOOMLINE [4] = RightEdge;
-
- ZOOMLINE [5] = ZOOMLINE [7] = BottomEdge;
- }
-
- DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- MASK |= ZMASK;
- }
-
- else MASK &= ~ZMASK;
-
- return (BOOL) (ZMASK & MASK);
- }
-
- BOOL FileRequest (struct Window *Win,TEXT *String,TEXT *DrawerTxt,BOOL DrawerType,BOOL Save)
- {
- struct FileRequester *MyFileReq;
-
- struct EasyStruct MyReq = { sizeof (struct EasyStruct),0,CATSTR(TITLE_OverwriteReq),CATSTR(OverWr_TXT_Question),CATSTR(TXT_YesNo)};
-
- BPTR MyLock;
-
- BOOL Success = FALSE;
-
- if (MyFileReq = AllocAslRequest (ASL_FileRequest,0))
- {
- MYDIR = (DrawerType ? PALETTESDIR : PICTURESDIR);
-
- if (! strlen (MYDIR)) strncpy (MYDIR,DrawerTxt,MAX_DIRLEN);
-
- if (AslRequestTags (MyFileReq,ASLFR_Window,Win,
- ASLFR_InitialLeftEdge,Win->LeftEdge + 25,
- ASLFR_InitialTopEdge,Win->TopEdge + 35,
- ASLFR_InitialWidth,300,
- ASLFR_InitialHeight,((Win->Height) * 7) >> 3,
- ASLFR_SleepWindow,TRUE,
- ASLFR_TextAttr,&MYFONTSTRUCT,
- ASLFR_TitleText,String,
- ASLFR_InitialDrawer,MYDIR,
- ASLFR_InitialFile,MYFILE,
- ASLFR_DoSaveMode,Save,
- ASLFR_RejectIcons,TRUE,
- TAG_END))
- {
- strncpy (MYFILE,MyFileReq->rf_File,MAX_FILELEN);
-
- strncpy (MYDIR,MyFileReq->rf_Dir,MAX_DIRLEN);
-
- strcpy (MYPATH,MYDIR);
-
- Success = AddPart (MYPATH,MYFILE,sizeof (MYPATH));
- }
-
- FreeAslRequest (MyFileReq);
-
- if (Save && Success)
- {
- if (MyLock = Lock (MYPATH,ACCESS_READ))
- {
- UnLock (MyLock);
-
- if (ResourceBase)
- {
- if (! Do_OverwriteRequest (Win, FMSCREENNAME, 0, 0)) Success = FALSE;
- }
-
- else
- {
- if (! EasyRequest (Win,&MyReq,0)) Success = FALSE;
- }
- }
- }
- }
-
- return Success;
- }
-
- BOOL FontRequest (struct Window *Win)
- {
- struct FontRequester *MyFontReq;
-
- BOOL Success = FALSE;
-
- if (MyFontReq = AllocAslRequest (ASL_FontRequest,0))
- {
- if (AslRequestTags (MyFontReq,ASLFO_Window,Win,
- ASLFO_InitialLeftEdge,Win->LeftEdge + 25,
- ASLFO_InitialTopEdge,Win->TopEdge + 35,
- ASLFO_InitialWidth,300,
- ASLFO_InitialHeight,((Win->Height) * 7) >> 3,
- ASLFO_SleepWindow,TRUE,
- ASLFO_TextAttr,&MYFONTSTRUCT,
- ASLFO_TitleText,"Font requester",
- ASLFO_InitialName,MYFONTSTRUCT.ta_Name,
- ASLFO_InitialSize,MYFONTSTRUCT.ta_YSize,
- ASLFO_InitialStyle,MYFONTSTRUCT.ta_Style,
- ASLFO_InitialFlags,MYFONTSTRUCT.ta_Flags,
- ASLFO_DoFrontPen,TRUE,
- ASLFO_DoBackPen,TRUE,
- ASLFO_DoStyle,TRUE,
- ASLFO_DoDrawMode,TRUE,
- ASLFO_MinHeight,8,
- ASLFO_MaxHeight,24,
- TAG_END))
- {
- strncpy (MYFONTSTRUCT.ta_Name,MyFontReq->fo_Attr.ta_Name,MAX_FILELEN);
-
- MYFONTSTRUCT.ta_YSize = MyFontReq->fo_Attr.ta_YSize;
-
- MYFONTSTRUCT.ta_Style = MyFontReq->fo_Attr.ta_Style;
-
- MYFONTSTRUCT.ta_Flags = MyFontReq->fo_Attr.ta_Flags;
-
- Success = TRUE;
- }
-
- FreeAslRequest (MyFontReq);
- }
-
- return Success;
- }
-
- static ULONG HOOKCALL SMFilterFunc (REG (a0,struct Hook *Hook),REG (a2,struct ScreenModeRequester *SMReq),REG (a1,ULONG DisplayID))
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DisplayInfo DisplayInfo;
-
- struct DimensionInfo DimensionInfo;
-
- ULONG Accept = NULL;
-
- DisplayHandle = FindDisplayInfo (DisplayID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DisplayInfo,sizeof (struct DisplayInfo),DTAG_DISP,DisplayID))
- {
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DimensionInfo,sizeof (struct DimensionInfo),DTAG_DIMS,DisplayID))
- {
- Accept = (ULONG) ((DimensionInfo.MaxDepth <= MAX_DEPTH) && (DisplayInfo.PropertyFlags & DIPF_IS_WB));
- }
- }
-
- return Accept;
- }
-
- BOOL SMRequest (struct ILBMInfo *Ilbm)
- {
- struct ScreenModeRequester *SMReq;
-
- struct Window *Win = Ilbm->win;
-
- BOOL NewScreen = FALSE;
-
- if (SMReq = AllocAslRequest (ASL_ScreenModeRequest,NULL))
- {
- if (AslRequestTags (SMReq,ASLSM_Window,Win,
- ASLSM_SleepWindow,TRUE,
- ASLSM_TitleText,"ScreenMode requester",
- ASLSM_InitialLeftEdge,Win->LeftEdge + 25,
- ASLSM_InitialTopEdge,Win->TopEdge + 35,
- ASLSM_InitialWidth,310,
- ASLSM_InitialHeight,((Win->Height) * 7) >> 3,
- ASLSM_InitialDisplayID,GetVPModeID (Ilbm->vp),
- ASLSM_InitialDisplayWidth,Win->Width,
- ASLSM_InitialDisplayHeight,Win->Height,
- ASLSM_InitialDisplayDepth,Ilbm->wrp->BitMap->Depth,
- ASLSM_InitialOverscanType,Ilbm->ucliptype,
- ASLSM_InitialInfoOpened,TRUE,
- ASLSM_InitialInfoLeftEdge,Win->LeftEdge + 310 + 15,
- ASLSM_InitialInfoTopEdge,Win->TopEdge,
- ASLSM_DoWidth,TRUE,
- ASLSM_DoHeight,TRUE,
- ASLSM_DoDepth,TRUE,
- ASLSM_DoOverscanType,TRUE,
- ASLSM_MinDepth,MIN_DEPTH,
- ASLSM_MaxDepth,MAX_DEPTH,
- ASLSM_PropertyFlags,DIPF_IS_WB,
- ASLSM_PropertyMask,DIPF_IS_DUALPF|DIPF_IS_PF2PRI|DIPF_IS_HAM|DIPF_IS_EXTRAHALFBRITE,
- ASLSM_FilterFunc,&SMFILTERHOOK,
- ASLSM_MinWidth,MIN_WIDTH,
- ASLSM_MinHeight,MIN_HEIGHT,
- TAG_END))
- {
- Ilbm->camg = SMReq->sm_DisplayID;
-
- Ilbm->Bmhd.w = SMReq->sm_DisplayWidth;
-
- Ilbm->Bmhd.h = SMReq->sm_DisplayHeight;
-
- Ilbm->Bmhd.nPlanes = SMReq->sm_DisplayDepth;
-
- Ilbm->ucliptype = SMReq->sm_OverscanType;
-
- NewScreen = TRUE;
- }
-
- FreeAslRequest (SMReq);
- }
-
- return NewScreen;
- }
-
- VOID SetMenuStart (struct Window *Win)
- {
- OnMenu (Win,FULLMENUNUM (0,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,4,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,6,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,7,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,8,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,9,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,11,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,13,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,1,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,3,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,5,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,6,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,7,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,7,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,4,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,6,NOSUB));
- }
-
- VOID SetMenuStop (struct Window *Win)
- {
- OffMenu (Win,FULLMENUNUM (0,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,6,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,7,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,8,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,9,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,11,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,13,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,1,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,3,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,5,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,6,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,7,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,6,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,7,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,6,NOSUB));
- }
-
- ULONG ProcessMenu (struct Window *Win,UWORD Code)
- {
- struct MenuItem *Item;
-
- ULONG Choice = NULL;
-
- while (Code != MENUNULL)
- {
- Item = ItemAddress (MAINMENU,(ULONG) Code);
-
- switch (MENUNUM (Code))
- {
- case 0: switch (ITEMNUM (Code))
- {
- case 0: Choice |= ABOUT_MSG;
-
- break;
-
- case 2: Choice |= SYSINFO_MSG;
-
- break;
-
- case 4: Choice |= SHOWGUIDE_MSG;
-
- break;
-
- case 6: Choice |= LOADPICTURE_MSG;
-
- break;
-
- case 7: Choice |= SAVEPICTURE_MSG;
-
- break;
-
- case 8: Choice |= LOADPALETTE_MSG;
-
- break;
-
- case 9: Choice |= SAVEPALETTE_MSG;
-
- break;
-
- case 11: Choice |= DUMP_MSG;
-
- break;
-
- case 13: Choice |= EXIT_MSG;
-
- break;
- }
-
- break;
-
- case 1: switch (ITEMNUM (Code))
- {
- case 0: switch (SUBNUM (Code))
- {
- case 0: Choice |= TITLE_MSG;
-
- break;
-
- case 2: Choice |= TIME_MSG;
-
- break;
- }
-
- break;
-
- case 1: Choice |= COORDS_MSG;
-
- break;
-
- case 2: switch (SUBNUM (Code))
- {
- case 0: MAX_ITERATIONS = 256;
-
- break;
-
- case 1: MAX_ITERATIONS = 320;
-
- break;
-
- case 2: MAX_ITERATIONS = 512;
-
- break;
-
- case 3: MAX_ITERATIONS = 1024;
-
- break;
-
- case 4: MAX_ITERATIONS = 2048;
-
- break;
-
- case 5: MAX_ITERATIONS = 4096;
-
- break;
-
- case 6: MAX_ITERATIONS = 8192;
-
- break;
-
- case 7: MAX_ITERATIONS = 16384;
-
- break;
-
- case 8: MAX_ITERATIONS = 32767;
-
- break;
-
- case 10: Choice |= ITER_MSG;
-
- break;
- }
-
- break;
-
- case 3: switch (SUBNUM (Code))
- {
- case 0: MANDChunk.Power = 0;
-
- break;
-
- case 1: MANDChunk.Power = 1;
-
- break;
-
- case 2: MANDChunk.Power = 2;
-
- break;
-
- case 3: MANDChunk.Power = 3;
-
- break;
-
- case 4: MANDChunk.Power = 4;
-
- break;
-
- case 5: MANDChunk.Power = 5;
-
- break;
-
- case 6: MANDChunk.Power = 6;
-
- break;
-
- case 7: MANDChunk.Power = 7;
-
- break;
-
- case 8: MANDChunk.Power = 8;
-
- break;
-
- case 9: MANDChunk.Power = 9;
-
- break;
-
- case 10: MANDChunk.Power = 10;
-
- break;
- }
-
- break;
-
- case 4: switch (SUBNUM (Code))
- {
- case 0: PRIORITY = -5;
-
- break;
-
- case 1: PRIORITY = -4;
-
- break;
-
- case 2: PRIORITY = -3;
-
- break;
-
- case 3: PRIORITY = -2;
-
- break;
-
- case 4: PRIORITY = -1;
-
- break;
-
- case 6: PRIORITY = 0;
-
- break;
-
- case 8: PRIORITY = 1;
-
- break;
-
- case 9: PRIORITY = 2;
-
- break;
-
- case 10: PRIORITY = 3;
-
- break;
-
- case 11: PRIORITY = 4;
-
- break;
-
- case 12: PRIORITY = 5;
-
- break;
-
- }
-
- Forbid ();
-
- THISTASK = FindTask (NULL);
-
- Permit ();
-
- SetTaskPri (THISTASK,PRIORITY);
-
- break;
-
- case 5: switch (SUBNUM (Code))
- {
- case 0: if (! (MANDChunk.Flags & LINEAR_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= LINEAR_BIT;
-
- MANDChunk.Flags &= ~(SQUARE_BIT|REPEATED_BIT|LOG_BIT|ONE_BIT|TWO_BIT|THREE_BIT|FOUR_BIT);
- }
-
- break;
-
- case 1: if (! (MANDChunk.Flags & LOG_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= LOG_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|REPEATED_BIT|SQUARE_BIT|ONE_BIT|TWO_BIT|THREE_BIT|FOUR_BIT);
- }
-
- break;
-
- case 2: if (! (MANDChunk.Flags & REPEATED_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= REPEATED_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|SQUARE_BIT|LOG_BIT|ONE_BIT|TWO_BIT|THREE_BIT|FOUR_BIT);
- }
-
- break;
-
- case 3: if (! (MANDChunk.Flags & SQUARE_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= SQUARE_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|REPEATED_BIT|LOG_BIT|ONE_BIT|TWO_BIT|THREE_BIT|FOUR_BIT);
- }
-
- break;
-
- case 4: if (! (MANDChunk.Flags & ONE_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= ONE_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|REPEATED_BIT|LOG_BIT|SQUARE_BIT|TWO_BIT|THREE_BIT|FOUR_BIT);
- }
-
- break;
-
- case 5: if (! (MANDChunk.Flags & TWO_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= TWO_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|REPEATED_BIT|LOG_BIT|SQUARE_BIT|ONE_BIT|THREE_BIT|FOUR_BIT);
- }
-
- break;
-
- case 6: if (! (MANDChunk.Flags & THREE_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= THREE_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|REPEATED_BIT|LOG_BIT|SQUARE_BIT|ONE_BIT|TWO_BIT|FOUR_BIT);
- }
-
- break;
-
- case 7: if (! (MANDChunk.Flags & FOUR_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= FOUR_BIT;
-
- MANDChunk.Flags &= ~(LINEAR_BIT|REPEATED_BIT|LOG_BIT|SQUARE_BIT|ONE_BIT|TWO_BIT|THREE_BIT);
- }
-
- break;
- }
-
- break;
-
- case 6: switch (SUBNUM (Code))
- {
- case 0: if (! (MANDChunk.Flags & JULIA_BIT))
- {
- if (PickJuliaK (Win))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= JULIA_BIT;
-
- MANDChunk.Flags &= ~(MANDEL_BIT|JULIA4_BIT|MANDEL4_BIT);
-
- Choice |= REDRAW_MSG;
- }
- }
-
- break;
-
- case 1: if (! (MANDChunk.Flags & MANDEL_BIT))
- {
- SaveCoords (Win,TRUE);
-
- MANDChunk.Flags |= MANDEL_BIT;
-
- MANDChunk.Flags &= ~(JULIA_BIT|JULIA4_BIT|MANDEL4_BIT);
-
- RMIN = DEF_RMIN;
-
- RMAX = DEF_RMAX;
-
- IMIN = DEF_IMIN;
-
- IMAX = DEF_IMAX;
-
- Choice |= REDRAW_MSG;
- }
-
- break;
- }
-
- break;
-
- case 7: switch (SUBNUM (Code))
- {
- case 0: MANDChunk.Flags |= MC68K_BIT;
-
- MANDChunk.Flags &= ~PPC_BIT;
-
- break;
-
- case 1: MANDChunk.Flags |= PPC_BIT;
-
- MANDChunk.Flags &= ~MC68K_BIT;
-
- break;
- }
- }
-
- break;
-
- case 2: switch (ITEMNUM (Code))
- {
- case 0: Choice |= PREVIEW_MSG;
-
- break;
-
- case 2: Choice |= REDRAW_MSG;
-
- break;
-
- case 4: Choice |= (UNDO_MSG|REDRAW_MSG);
-
- break;
-
- case 6: Choice |= DRAW_MSG;
-
- break;
-
- case 7: Choice |= STOP_MSG;
-
- break;
- }
-
- break;
-
- case 3: switch (ITEMNUM (Code))
- {
- case 0: switch (SUBNUM (Code))
- {
- case 0: Choice |= CYCLERIGHT_MSG;
-
- break;
-
- case 1: Choice |= CYCLELEFT_MSG;
-
- break;
-
- case 3: Choice |= DELAY_MSG;
-
- break;
-
- }
-
- break;
-
- case 2: Choice |= PALETTE_MSG;
-
- break;
-
- case 4: Choice |= NEWDISPLAY_MSG;
-
- break;
-
- case 6: Choice |= FONTREQ_MSG;
-
- break;
- }
-
- case 4: Choice |= AREXX_MSG;
- }
-
- Code = Item->NextSelect;
- }
-
- return Choice;
- }
-
- void CheckMenu (struct Window *Win)
- {
- UWORD Index;
-
- ClearMenuStrip (Win);
-
- for (Index = 0; Index <= 10; Index++) ItemAddress (MAINMENU,FULLMENUNUM (1,3,Index))->Flags &= ~CHECKED;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,3,MANDChunk.Power))->Flags |= CHECKED;
-
- for (Index = 0; Index <= 7; Index++) ItemAddress (MAINMENU,FULLMENUNUM (1,5,Index))->Flags &= ~CHECKED;
-
- if (MANDChunk.Flags & LINEAR_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & LOG_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & REPEATED_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,2))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & SQUARE_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,3))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & ONE_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,4))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & TWO_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,5))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & THREE_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,6))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & FOUR_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,5,7))->Flags |= CHECKED;
-
- for (Index = 0; Index <= 1; Index++) ItemAddress (MAINMENU,FULLMENUNUM (1,6,Index))->Flags &= ~CHECKED;
-
- if (MANDChunk.Flags & JULIA_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,6,0))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & MANDEL_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,6,1))->Flags |= CHECKED;
-
- for (Index = 0; Index <= 1; Index++) ItemAddress (MAINMENU,FULLMENUNUM (1,7,Index))->Flags &= ~CHECKED;
-
- if ((MANDChunk.Flags & PPC_BIT) && (CPUINFO & (CPU_603|CPU_603e|CPU_604|CPU_604e|CPU_620|CPU_G3|CPU_G4|CPU_G5))) ItemAddress (MAINMENU,FULLMENUNUM (1,7,1))->Flags |= CHECKED;
-
- else if (MANDChunk.Flags & PPC_BIT)
- {
- MANDChunk.Flags &= ~PPC_BIT;
-
- MANDChunk.Flags |= MC68K_BIT;
- }
-
- if (MANDChunk.Flags & MC68K_BIT) ItemAddress (MAINMENU,FULLMENUNUM (1,7,0))->Flags |= CHECKED;
-
- for (Index = 0; Index <= 10; Index++) ItemAddress (MAINMENU,FULLMENUNUM (1,2,Index))->Flags &= ~CHECKED;
-
- switch (MAX_ITERATIONS)
- {
- case 256 : ItemAddress (MAINMENU,FULLMENUNUM (1,2,0))->Flags |= CHECKED;
-
- break;
-
- case 320: ItemAddress (MAINMENU,FULLMENUNUM (1,2,1))->Flags |= CHECKED;
-
- break;
-
- case 512: ItemAddress (MAINMENU,FULLMENUNUM (1,2,2))->Flags |= CHECKED;
-
- break;
-
- case 1024: ItemAddress (MAINMENU,FULLMENUNUM (1,2,3))->Flags |= CHECKED;
-
- break;
-
- case 2048: ItemAddress (MAINMENU,FULLMENUNUM (1,2,4))->Flags |= CHECKED;
-
- break;
-
- case 4096: ItemAddress (MAINMENU,FULLMENUNUM (1,2,5))->Flags |= CHECKED;
-
- break;
-
- case 8192: ItemAddress (MAINMENU,FULLMENUNUM (1,2,6))->Flags |= CHECKED;
-
- break;
-
- case 16384: ItemAddress (MAINMENU,FULLMENUNUM (1,2,7))->Flags |= CHECKED;
-
- break;
-
- case 32767: ItemAddress (MAINMENU,FULLMENUNUM (1,2,8))->Flags |= CHECKED;
-
- break;
-
- default: ItemAddress (MAINMENU,FULLMENUNUM (1,2,10))->Flags |= CHECKED;
-
- break;
- }
-
- ResetMenuStrip (Win,MAINMENU);
- }
-
- VOID ProcessMouse (struct Window *Win,WORD CurMouseX,WORD CurMouseY)
- {
- // static WORD MX1 = 0 , MY1 = 0 , MX2 = 0 , MY2 = 0, W = 0, H = 0;
-
- struct IntuiMessage *Message;
-
- UWORD MyCode;
-
- LONG DefaultQueue;
-
- ULONG MyClass;
-
- ModifyIDCMP (Win,IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE);
-
- DefaultQueue = SetMouseQueue (Win,10);
-
- if (ZMASK & MASK) DrawFrame (Win,MX1,MY1,W,H);
-
- MX1 = CurMouseX;
-
- MY1 = CurMouseY;
-
- W = INITIALZOOM;
-
- H = ScalerDiv ((LONG) W,(ULONG) Win->Height,(ULONG) Win->Width);
-
- DrawFrame (Win,MX1,MY1,W,H);
-
- while (1L)
- {
- WaitPort (Win->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- MX2 = Message->MouseX;
-
- MY2 = Message->MouseY;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
-
- if (MyClass == IDCMP_MOUSEMOVE)
- {
- DrawFrame (Win,MX1,MY1,W,H);
-
- W = abs (MX1 - MX2);
-
- H = abs (MY1 - MY2);
-
- if (W > H) (W = ScalerDiv ((LONG) H,(ULONG) Win->Width,(ULONG) Win->Height));
-
- else (H = ScalerDiv ((LONG) W,(ULONG) Win->Height,(ULONG) Win->Width));
-
- DrawFrame (Win,MX1,MY1,W,H);
- }
-
- else if ((MyClass == IDCMP_MOUSEBUTTONS) && (MyCode != SELECTDOWN)) break;
- }
- }
-
- SetMouseQueue (Win,(ULONG) DefaultQueue);
-
- ModifyIDCMP (Win,IDCMP_STANDARD);
-
- if (ZMASK & MASK)
- {
- OnMenu (Win,FULLMENUNUM (2,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,6,NOSUB));
- }
-
- else
- {
- OffMenu (Win,FULLMENUNUM (2,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,6,NOSUB));
- }
- }
-
- BOOL PickJuliaK (struct Window *Win)
- {
- struct IntuiMessage *Message;
-
- BOOL Selected = FALSE, End = FALSE;
-
- WORD MouseX = 0,MouseY = 0;
-
- UWORD MyCode = 0;
-
- ULONG MyClass = NULL;
-
- LDouble RealCoord=0.0,ImagCoord=0.0;
-
- ModifyIDCMP (Win,IDCMP_MOUSEBUTTONS|IDCMP_MOUSEMOVE|IDCMP_MENUPICK);
-
- ClearMenuStrip (Win);
-
- SetWindowTitles (Win,(TEXT *) ~0, CATSTR(TXT_LeftButtonForJulia));
-
- Delay (TWOSECS);
-
- do { WaitPort (Win->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- MouseX = Message->MouseX;
-
- MouseY = Message->MouseY;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- switch (MyClass)
- {
- case IDCMP_MOUSEMOVE: if (TMASK & MASK)
- {
- RealCoord = RMIN + ((LDouble) MouseX * fabs (RMAX-RMIN) / (LDouble) (Win->Width - 1));
-
- ImagCoord = IMAX - ((LDouble) MouseY * fabs (IMAX-IMIN) / (LDouble) (Win->Height - 1));
-
- sprintf (BAR_STRING, CATSTR(TXT_JuliaConstant),RealCoord,ImagCoord);
-
- WaitTOF ();
-
- SetWindowTitles (Win,(TEXT *) ~0,BAR_STRING);
- }
-
- break;
-
- case IDCMP_MOUSEBUTTONS: if (MyCode == SELECTDOWN)
- {
- JKRE = RMIN + ((LDouble) MouseX * fabs (RMAX-RMIN) / (LDouble) (Win->Width - 1));
-
- JKIM = IMAX - ((LDouble) MouseY * fabs (IMAX-IMIN) / (LDouble) (Win->Height - 1));
-
- End = Selected = TRUE;
- }
-
- break;
-
- case IDCMP_MENUPICK: End = TRUE;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,6,0))->Flags &= ~CHECKED;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,6,1))->Flags |= CHECKED;
-
- break;
- }
-
- } while (End != TRUE);
-
- ResetMenuStrip (Win,MAINMENU);
-
- ModifyIDCMP (Win,IDCMP_STANDARD);
-
- return (Selected);
- }
-
- ULONG HandleEvents (struct ILBMInfo *Ilbm)
- {
- struct IntuiMessage *Message;
-
- WORD MouseX = 0,MouseY = 0;
-
- UWORD MyCode = 0;
-
- LONG Error;
-
- ULONG MyClass = NULL,MyMenu = NULL;
-
- ULONG rxsig = arexxsignal;
-
- LDouble RealCoord,ImagCoord,ScrRatio,FracRatio;
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- // do { WaitPort (Ilbm->win->UserPort); - replaced
- wsignal = 1 << Ilbm->win->UserPort->mp_SigBit; /* new for ARexx-support */
-
- #ifndef FM_AREXX_SUPPORT /* new for ARexx-support */
-
- do { receivedsig = Wait(wsignal);
-
- #else /* FM_AREXX_SUPPORT */
- do { receivedsig = Wait (wsignal|rxsig);
-
- if (receivedsig & arexxsignal) {
- ULONG result, code;
- struct FM_ARexxEvent *act_event = NULL;
-
- result = DoMethod (ARexxObj, AM_HANDLEEVENT, &code);
- MyMenu = HandleARexxEvents (Ilbm, &Error);
- }
-
- #endif /* FM_AREXX_SUPPORT */
-
- if (receivedsig & wsignal) {
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Ilbm->win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- MouseX = Message->MouseX;
-
- MouseY = Message->MouseY;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- switch (MyClass)
- {
- case IDCMP_MOUSEMOVE: if (TMASK & MASK)
- {
- RealCoord = RMIN + ((LDouble) MouseX * fabs (RMAX-RMIN) / (LDouble) (Ilbm->win->Width - 1));
-
- ImagCoord = IMAX - ((LDouble) MouseY * fabs (IMAX-IMIN) / (LDouble) (Ilbm->win->Height - 1));
-
- ScrRatio = (LDouble) Ilbm->win->Width / (LDouble) Ilbm->win->Height;
-
- FracRatio = fabs (RMAX-RMIN) / fabs (IMAX-IMIN);
-
- sprintf (BAR_STRING,"Real %#+2.16f Imag %#+2.16fi W:H %.3f R:I %.3f",RealCoord,ImagCoord,ScrRatio,FracRatio);
-
- WaitTOF ();
-
- SetWindowTitles (Ilbm->win,(TEXT *) ~0,BAR_STRING);
- }
-
- break;
-
- case IDCMP_MOUSEBUTTONS: if (MyCode == SELECTDOWN) ProcessMouse (Ilbm->win,MouseX,MouseY);
-
- break;
-
- case IDCMP_MENUPICK: MyMenu = ProcessMenu (Ilbm->win,MyCode);
-
- if (MyMenu & EXIT_MSG) break;
-
- if (MyMenu & SHOWGUIDE_MSG)
- {
- Execute (CATSTR(TXT_CMD_Guide),NULL,NULL);
-
- break;
- }
-
- if (MyMenu & TITLE_MSG)
- {
- if (TMASK & MASK) MASK &= ~TMASK;
-
- else MASK |= TMASK;
-
- Ilbm->TBState = TMASK & MASK;
-
- ShowTitle (Ilbm->scr,(LONG) Ilbm->TBState);
-
- break;
- }
-
- if (MyMenu & TIME_MSG)
- {
- if (! (TMASK & MASK)) ShowTitle (Ilbm->scr,TRUE);
-
- ShowTime (Ilbm->win, CATSTR(TXT_LastCalcTime),ELAPSEDTIME);
-
- Delay (TWOSECS);
-
- if (! (TMASK & MASK)) ShowTitle (Ilbm->scr,FALSE);
-
- break;
- }
-
- if (MyMenu & ITER_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- while (1L)
- {
- if (ResourceBase)
- {
- MAX_ITERATIONS = (UWORD) Do_IterationsRequest (Ilbm->win, FMSCREENNAME, 0, 0, MAX_ITERATIONS);
- }
-
- else
- {
- MAX_ITERATIONS = (UWORD) IntegerGad (Ilbm->win, CATSTR(TITLE_IterationsReq), CATSTR(TXT_ScrTitle_It), CATSTR(It_TXT_Iterations),MAX_ITERATIONS);
- }
-
- if (MAX_ITERATIONS >= MIN_ITERATIONS && MAX_ITERATIONS <= MAX_ALLOWED_ITERATIONS) break;
-
- DisplayBeep (Ilbm->scr);
- }
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & ABOUT_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- if (ResourceBase)
- {
- Do_InfoRequest (Ilbm->win, FMSCREENNAME, 0, 0);
- }
-
- else {About (Ilbm->win);}
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & SYSINFO_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- if (ResourceBase) Do_SysInfoRequest(Ilbm->win, FMSCREENNAME, 0, 0);
-
- else SystemInfo (Ilbm->win);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & PALETTE_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- if (ResourceBase)
- {
- res = Do_PalettePrefRequest (Ilbm->win, FMSCREENNAME, 0, 0, (struct loadrgb *) PALETTE);
- }
-
- else
- {
- res = ModifyPalette (Ilbm->win,Ilbm->win->LeftEdge + 25,Ilbm->win->TopEdge + 35,PALETTE);
- }
-
- if (! res) DisplayError (Ilbm->win, TXT_ERR_PaletteRequester, 15L);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & CYCLERIGHT_MSG)
- {
- ModifyIDCMP (Ilbm->win,IDCMP_MOUSEBUTTONS|IDCMP_RAWKEY|IDCMP_MENUPICK);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- Cycle (Ilbm->win,DELAY,SHIFTRIGHT);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- LoadRGB32 (Ilbm->vp,PALETTE);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & CYCLELEFT_MSG)
- {
- ModifyIDCMP (Ilbm->win,IDCMP_MOUSEBUTTONS|IDCMP_RAWKEY|IDCMP_MENUPICK);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- Cycle (Ilbm->win,DELAY,SHIFTLEFT);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- LoadRGB32 (Ilbm->vp,PALETTE);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & DELAY_MSG)
- {
- while (1L)
- {
- if (ResourceBase)
- {
- DELAY = Do_CycleDelayRequest(Ilbm->win, FMSCREENNAME, 0, 0, DELAY);
- }
-
- else
- {
- DELAY = IntegerGad (Ilbm->win, CATSTR(TITLE_CycleDelayReq), CATSTR(TXT_ScrTitle_Cyc), CATSTR(Cyc_TXT_DelayTime),DELAY);
- }
-
- if ((DELAY >= 0L) && (DELAY <= 200)) break;
-
- DisplayBeep (Ilbm->scr);
- }
-
- break;
- }
-
- if (MyMenu & STOP_MSG)
- {
- SetMenuStart (Ilbm->win);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- break;
- }
-
- if (MyMenu & LOADPICTURE_MSG)
- {
- if (FileRequest (Ilbm->win,CATSTR(TXT_LoadPictureTitle),"FLASHMANDEL:Pictures",PICTURES_DRAWER,FALSE))
- {
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- SaveCoords (Ilbm->win,TRUE);
-
- if (! (Error = QueryMandPic (Ilbm,&MANDChunk,MYPATH)))
- {
- RMIN = MANDChunk.RMin;
-
- RMAX = MANDChunk.RMax;
-
- IMIN = MANDChunk.IMin;
-
- IMAX = MANDChunk.IMax;
-
- JKRE = MANDChunk.JKre;
-
- JKIM = MANDChunk.JKim;
-
- MAX_ITERATIONS = MANDChunk.Iterations;
-
- Fade (MYILBM.win,PALETTE,25L,1L,TOBLACK);
-
- CloseDisplay (Ilbm,VINFO);
-
- Ilbm->IFFPFlags = IFFPF_BESTFIT;
-
- COLORS = MakeDisplay (Ilbm);
-
- Ilbm->IFFPFlags = NULL;
-
- if (! COLORS)
- {
- DisplayError (Ilbm->win, TXT_ERR_MakeDisplay, 20L);
-
- MyMenu = EXIT_MSG;
-
- break;
- }
-
- MASK &= ~ZMASK;
-
- COLORS -= RESERVED_PENS;
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- if (LoadMandPic (Ilbm,MYPATH,TRUE)) DisplayError (Ilbm->win, TXT_ERR_LoadMandPic, 5L);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- GetRGB32 (Ilbm->vp->ColorMap,0L,(ULONG) Ilbm->vp->ColorMap->Count,PALETTE + 1L);
-
- CheckMenu (Ilbm->win);
- }
-
- else DisplayError (Ilbm->win, TXT_ERR_QueryMandPic, 0);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- break;
- }
-
- if (MyMenu & SAVEPICTURE_MSG)
- {
- if (FileRequest (Ilbm->win, CATSTR(TXT_SavePictureTitle),"FLASHMANDEL:Pictures",PICTURES_DRAWER,TRUE))
- {
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- MANDChunk.LeftEdge = Ilbm->win->LeftEdge;
-
- MANDChunk.TopEdge = Ilbm->win->TopEdge;
-
- MANDChunk.Width = Ilbm->win->Width;
-
- MANDChunk.Height = Ilbm->win->Height;
-
- MANDChunk.RMin = RMIN;
-
- MANDChunk.RMax = RMAX;
-
- MANDChunk.IMin = IMIN;
-
- MANDChunk.IMax = IMAX;
-
- MANDChunk.JKre = JKRE;
-
- MANDChunk.JKim = JKIM;
-
- MANDChunk.Iterations = MAX_ITERATIONS;
-
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK &= ~ZMASK;
- }
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- if (SaveMandPic (Ilbm,&SPECIAL_CHUNK,&USERNAME_CHUNK,MYPATH)) DisplayError (Ilbm->win, TXT_ERR_SaveMandPic, 5L);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- break;
- }
-
- if (MyMenu & LOADPALETTE_MSG)
- {
- if (FileRequest (Ilbm->win,CATSTR(TXT_LoadPaletteTitle),"FLASHMANDEL:Palettes",PALETTES_DRAWER,FALSE))
- {
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- if (LoadPalette (Ilbm,MYPATH,TRUE)) DisplayError (Ilbm->win, TXT_ERR_LoadMandPal, 5L);
-
- GetRGB32 (Ilbm->vp->ColorMap,0L,(ULONG) Ilbm->vp->ColorMap->Count,PALETTE + 1L);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
-
- else DisplayError (Ilbm->win, TXT_ERR_NoMem, 5L);
-
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- break;
- }
-
- if (MyMenu & SAVEPALETTE_MSG)
- {
- if (FileRequest (Ilbm->win, CATSTR(TXT_SavePaletteTitle),"FLASHMANDEL:Palettes",PALETTES_DRAWER,TRUE))
- {
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- if (SavePalette (Ilbm,©RIGHT_CHUNK,MYPATH)) DisplayError(Ilbm->win, TXT_ERR_SaveMandPal, 5L);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
-
- else DisplayError (Ilbm->win, TXT_ERR_NoMem, 5L);
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- break;
- }
-
- if (MyMenu & FONTREQ_MSG)
- {
- if (FontRequest (Ilbm->win))
- {
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK &= ~ZMASK;
- }
-
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- MYBITMAP = CopyBitMap (Ilbm->win,Ilbm->win->LeftEdge,Ilbm->win->TopEdge,Ilbm->win->Width,Ilbm->win->Height);
-
- Fade (MYILBM.win,PALETTE,25L,1L,TOBLACK);
-
- CloseDisplay (Ilbm,VINFO);
-
- if (! MakeDisplay (Ilbm))
- {
- DisplayError(Ilbm->win, TXT_ERR_MakeDisplay, 20L);
-
- MyMenu = EXIT_MSG;
-
- break;
- }
-
- PasteBitMap (MYBITMAP,Ilbm->win,Ilbm->win->Width,Ilbm->win->Height);
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- break;
- }
-
- if (MyMenu & DUMP_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- if (ResourceBase)
- {
- res = Do_PrintRequest(Ilbm->win, FMSCREENNAME, 0, 0);
- }
-
- else
- {
- res = Choice (Ilbm->win,CATSTR(TITLE_PrintReq),CATSTR(Prt_TXT_AreYouSure));
- }
-
- if (res)
- {
- WinDump (Ilbm->win);
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & PREVIEW_MSG)
- {
- if (NewCoords (Ilbm->win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4],ZOOMLINE [5]))
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- Preview (Ilbm->win,Ilbm->win->Width,Ilbm->win->Height);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- RestoreCoords (Ilbm->win);
- }
-
- break;
- }
-
- if (MyMenu & COORDS_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- if (ResourceBase)
- {
- res = Do_CoordinatesRequest(Ilbm->win, FMSCREENNAME, 0, 0);
- }
-
- else
- {
- res = ShowCoords (Ilbm->win);
- }
-
- if (res)
- {
- if (ResourceBase)
- {
- res = Do_RenderRequest(Ilbm->win, FMSCREENNAME, 0, 0);
- }
-
- else
- {
- res = Choice (Ilbm->win, CATSTR(TITLE_RenderReq), CATSTR(Rend_TXT_Question));
- }
-
- if (res) MyMenu |= REDRAW_MSG;
- }
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
- }
-
- if (MyMenu & UNDO_MSG) RestoreCoords (Ilbm->win);
-
- if (MyMenu & REDRAW_MSG)
- {
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK &= ~ZMASK;
- }
-
- SetMenuStop (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- ELAPSEDTIME = DrawFractal (Ilbm->win,Ilbm->win->LeftEdge,Ilbm->win->TopEdge,Ilbm->win->Width,Ilbm->win->Height,TRUE);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- SetMenuStart (Ilbm->win);
-
- ShowTime (Ilbm->win,CATSTR(TXT_RecalculateTime),ELAPSEDTIME);
-
- break;
- }
-
- if (MyMenu & DRAW_MSG)
- {
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK &= ~ZMASK;
- }
-
- if (NewCoords (Ilbm->win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4],ZOOMLINE [5]))
- {
- MYBITMAP = CopyBitMap (Ilbm->win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- PasteBitMap (MYBITMAP,Ilbm->win,ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- SetMenuStop (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,BUSY_POINTER);
-
- ELAPSEDTIME = DrawFractal (Ilbm->win,Ilbm->win->LeftEdge,Ilbm->win->TopEdge,Ilbm->win->Width,Ilbm->win->Height,TRUE);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,ZOOM_POINTER);
-
- SetMenuStart (Ilbm->win);
-
- ShowTime (Ilbm->win, CATSTR(TXT_ZoomTime),ELAPSEDTIME);
- }
-
- break;
- }
-
- if (MyMenu & AREXX_MSG)
- {
- HandleARexxMenu (Ilbm, MyCode);
-
- break;
- }
-
- break;
-
- case IDCMP_RAWKEY: if (MyCode == RAW_ESC) MyMenu = EXIT_MSG;
-
- if (MyCode == HELP) Execute (CATSTR(TXT_CMD_Guide),NULL,NULL);
-
- break;
-
- case IDCMP_CLOSEWINDOW: MyMenu = EXIT_MSG;
- }
-
- } /* new for ARexx-support */
-
- MyClass = 0;
-
- } while (! ((MyMenu & EXIT_MSG) || (MyMenu & NEWDISPLAY_MSG)));
-
- return MyMenu;
- }
-
- void FreeBitMapSafety (struct BitMap *Bitmap)
- {
- WaitBlit ();
-
- FreeBitMap (Bitmap);
- }
-
- struct BitMap *CopyBitMap (struct Window *Win,WORD Left,WORD Top,WORD Width,WORD Height)
- {
- struct BitMap *NewBM;
-
- NewBM = AllocBitMap ((ULONG) Width,(ULONG) Height,(ULONG) Win->RPort->BitMap->Depth,BMF_INTERLEAVED | BMF_CLEAR | BMF_MINPLANES,Win->RPort->BitMap);
-
- if (NewBM)
- {
- if (ZMASK & MASK) DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,FALSE);
-
- BltBitMap (Win->RPort->BitMap,Left,Top,NewBM,0,0,Width,Height,0xC0,0xFF,NULL);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,TRUE);
-
- if (ZMASK & MASK) DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- MASK |= BMASK;
- }
-
- return NewBM;
- }
-
- BOOL PasteBitMap (struct BitMap *SrcBM,struct Window *DstWin,WORD SrcWidth,WORD SrcHeight)
- {
- BOOL Success = FALSE;
-
- UWORD DstWinWidth,DstWinHeight;
-
- struct BitMap *TmpBM;
-
- if (SrcBM && (MASK & BMASK))
- {
- DstWinWidth = ((DstWin->Flags & WFLG_GIMMEZEROZERO) ? DstWin->GZZWidth : DstWin->Width);
-
- DstWinHeight = ((DstWin->Flags & WFLG_GIMMEZEROZERO) ? DstWin->GZZHeight : DstWin->Height);
-
- TmpBM = AllocBitMap ((ULONG) DstWinWidth,(ULONG) DstWinHeight,(ULONG) DstWin->RPort->BitMap->Depth,BMF_INTERLEAVED | BMF_MINPLANES | BMF_CLEAR,DstWin->RPort->BitMap);
-
- if (TmpBM)
- {
- BSA.bsa_SrcWidth = SrcWidth;
- BSA.bsa_SrcHeight = SrcHeight;
- BSA.bsa_XSrcFactor = SrcWidth;
- BSA.bsa_YSrcFactor = SrcHeight;
- BSA.bsa_XDestFactor = DstWinWidth;
- BSA.bsa_YDestFactor = DstWinHeight;
- BSA.bsa_SrcBitMap = SrcBM;
- BSA.bsa_DestBitMap = TmpBM;
-
- BitMapScale (&BSA);
-
- BltBitMapRastPort (TmpBM,0,0,DstWin->RPort,0,0,DstWinWidth,DstWinHeight,0xC0);
-
- FreeBitMapSafety (TmpBM);
-
- Success = TRUE;
- }
-
- FreeBitMapSafety (SrcBM);
-
- MASK &= ~BMASK;
- }
-
- return Success;
- }
-
- LONG WinDump (struct Window *Win)
- {
- struct IODRPReq *IODrp;
- struct MsgPort *PrinterPort;
- struct ViewPort *Vp;
-
- LONG Error = PDERR_BADDIMENSION;
-
- if (! Win) return Error;
-
- if (PrinterPort = CreatePort (0,0))
- {
- if (IODrp = (struct IODRPReq *) CreateExtIO (PrinterPort,sizeof (struct IODRPReq)))
- {
- if (! (Error = OpenDevice (PRINTERDEVICE,0,(struct IORequest *) IODrp,0)))
- {
- Vp = ViewPortAddress (Win);
-
- IODrp->io_Command = PRD_DUMPRPORT;
- IODrp->io_RastPort = Win->RPort;
- IODrp->io_ColorMap = Vp->ColorMap;
- IODrp->io_Modes = GetVPModeID (Vp);
- IODrp->io_SrcX = Win->LeftEdge;
- IODrp->io_SrcY = Win->TopEdge;
- IODrp->io_SrcWidth = Win->Width;
- IODrp->io_SrcHeight = Win->Height;
- // IODrp->io_DestCols = 0;
- // IODrp->io_DestRows = 0;
- IODrp->io_Special = SPECIAL_ASPECT | SPECIAL_TRUSTME | SPECIAL_CENTER;
-
- Error = DoIO ((struct IORequest *)IODrp);
-
- CloseDevice ((struct IORequest *)IODrp);
- }
-
- DeleteExtIO ((struct IORequest *)IODrp);
- }
-
- DeletePort (PrinterPort);
- }
-
- return Error;
- }
-